Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // КН15 лр9вар16.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <stdlib.h>
- #include <iostream>
- #include "conio.h"
- #include "time.h"
- #include "math.h"
- #pragma warning(disable: 4996)
- int main()
- {
- setlocale(LC_ALL, "Russian");
- srand(time(NULL));
- float a[100], b[100], c[100],dot[100][100];
- int cross[100];
- int m;
- int count = 0;
- float temp;
- printf("Количество прямых\n");
- scanf("%d", &m);
- for (int i = 0; i < m; i++)
- {
- cross[i] = 0;
- a[i] = rand() % 10;
- b[i] = rand() % 10;
- c[i] = rand() % 10;
- }
- for (int i = 0; i < m-1; i++)
- {
- for (int j = i+1; j < m; j++)
- {
- if (i != j)
- {
- if ((a[i]*b[j]-a[j]*b[i])!=0)
- {
- dot[0][count] = round( (-(c[i] * b[j] - c[j] * b[i]) / (a[i] * b[j] - a[j] * b[i])));
- dot[1][count] = round((-(a[i] * c[j] - a[j] * c[i]) / (a[i] * b[j] - a[j] * b[i])));
- cross[i]++;
- cross[j]++;
- count++;
- }
- }
- }
- }
- for (int i = 0; i < count - 1; i++)
- {
- for (int j = i + 1; j < count; j++)
- {
- if (dot[0][i] == dot[0][j] && dot[1][i] == dot[1][j])
- {
- for (int k = j; k < count; k++)
- {
- temp = dot[0][k];
- dot[0][k] = dot[0][k + 1];
- dot[0][k + 1] = temp;
- temp = dot[1][k];
- dot[1][k] = dot[1][k + 1];
- dot[1][k + 1] = temp;
- }
- count--;
- }
- }
- }
- int min = 10000, mini;
- for (int i = 0; i < m;i++)
- if (min>cross[i]) { min = cross[i]; mini = i; }
- printf("\nТочки пересечения прямых\n\n");
- printf("___________\n");
- printf("X Y \n");
- printf("___________\n");
- for (int i = 0; i < count; i++)
- printf("%.1f %.1f\n",dot[0][i],dot[1][i]);
- printf("\n Кол-во точек пересечений %d , номер прямой с минимальными пересечениями - %d", count,mini+1);
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment