Всем привет,я клоун студент.Препод дал задание написать программу ,которая генерит точки прямоугольника,прямоугольника и круга,это я сделал.Не могу найти их точки пересечения,даже не знаю,как это написать,как-то отрезками сказал препод,но я даже не знаю с чего начать.Надеюсь на вашу помощь,заранее спасибо.Ниже прикладываю код(С++) #include <stdlib.h> #include <ctime> // нужен для вызова функции time() #include <time.h> using namespace std; //задаем структуру точек struct Point { int x; int y; }; //структурируем точки треугольника struct Triangle { Point p1; Point p2; Point p3; }; //структурируем точки прямоугольника struct Rectangle { Point p1; Point p2; Point p3; Point p4; }; //структурируем центр и радиус окружности struct Circle { Point p; int radius; }; //функция генерации рандомного числа int GetRandomint(int min,int max) { return (min + rand() % (max-min+1)); }; // задаем случайную генерацию ординаты и абсциссы точки Point GetRandomPoint(int min,int max) { Point p; p.x = GetRandomint(min,max); p.y = GetRandomint(min,max); return p; } //задаем функцию генерации трех точек треугольника Triangle GetRandomTriangle(int min,int max) { Triangle trian; trian.p1 = GetRandomPoint( min,max); trian.p2 = GetRandomPoint( min, max); trian.p3.x = trian.p2.x; trian.p3.y = trian.p1.y; return trian; } //печать координаты точки void Print_point(Point p) { cout << "p(" << p.x << ";" << p.y << ")/n"; } // печать координат треугольника void Print_triangle(Triangle trian) { Print_point(trian.p1); Print_point(trian.p2); Print_point(trian.p3); cout << "\n\n"; } //выводим точки прямоугольника на экран( обращаем внимание,что третья точка строится по такому принципу: ордината третьей точки равна ординате 2-ой точки //а ее абсцисса = абсциссе 1-ой точки) - таким образом создастся перпендикуляр и прямой угол нашему треугольнику void Print_trian(Triangle trian) { cout << trian.p1.x << " " << trian.p1.y << "\n"; cout << trian.p2.x << " " << trian.p2.y << "\n"; cout << trian.p3.x << " " << trian.p3.y << "\n\n"; } //рандом точки прямоугольника (2-ух точек - они образуют диагональ) Rectangle GetRandomRectangle(int min,int max) { Rectangle rect; rect.p1 = GetRandomPoint(min,max); rect.p2 = GetRandomPoint(min,max); rect.p3.x = rect.p2.x; rect.p3.y = rect.p1.y; rect.p4.y = rect.p2.y; rect.p4.x = rect.p1.x; return rect; } // печать координат прямоугольника void Print_rectangle(Rectangle rect) { Print_point(rect.p1); Print_point(rect.p2); Print_point(rect.p3); Print_point(rect.p4); cout << "\n\n"; } //выводим точки на экран на двук осях координат (в данном случае принцип идентичен приципу с прямоуг.треугольником) void Print_rectan(Rectangle rect) { cout << rect.p1.x << " " << rect.p1.y << "\n"; cout << rect.p2.x << " " << rect.p2.y << "\n"; cout << rect.p3.x << " " << rect.p3.y << "\n"; cout << rect.p4.x << " " << rect.p4.y << "\n\n"; } //Задаем рандомный центр и радиус (для центра - точку,для радиуса - целочисленное значение) Circle GetRandomCircle(int min,int max) { Circle circle; circle.p = GetRandomPoint(min,max); circle.radius = GetRandomint(min,max); return circle; } //Печать центра и радиуса void Print_cir(Circle circle) { Print_point(circle.p); cout << "radius = " << circle.radius << "\n"; } //Выводим центр и радиус на экран void Print_circle(Circle circle) { cout << circle.p.x << " " << circle.p.y << "\n"; cout << circle.radius << " " << "\n\n"; } int main() { //подключаем русский язык и выводим конечный результат получения точек вершин наших фишур setlocale(LC_CTYPE, "rus"); srand(time(NULL)); Triangle trian = GetRandomTriangle(0,6); Rectangle rect = GetRandomRectangle(-10,10); Circle circle = GetRandomCircle(1,8); cout << "Координаты треугольника:\n"; Print_trian(trian); cout << "Координаты прямоугольника:\n"; Print_rectan(rect); cout << "Координаты центра окружности и его радиус:\n"; Print_circle(circle); return 0; } Code #include <stdlib.h> #include <ctime> // нужен для вызова функции time() #include <time.h> using namespace std; //задаем структуру точек struct Point { int x; int y; }; //структурируем точки треугольника struct Triangle { Point p1; Point p2; Point p3; }; //структурируем точки прямоугольника struct Rectangle { Point p1; Point p2; Point p3; Point p4; }; //структурируем центр и радиус окружности struct Circle { Point p; int radius; }; //функция генерации рандомного числа int GetRandomint(int min,int max) { return (min + rand() % (max-min+1)); }; // задаем случайную генерацию ординаты и абсциссы точки Point GetRandomPoint(int min,int max) { Point p; p.x = GetRandomint(min,max); p.y = GetRandomint(min,max); return p; } //задаем функцию генерации трех точек треугольника Triangle GetRandomTriangle(int min,int max) { Triangle trian; trian.p1 = GetRandomPoint( min,max); trian.p2 = GetRandomPoint( min, max); trian.p3.x = trian.p2.x; trian.p3.y = trian.p1.y; return trian; } //печать координаты точки void Print_point(Point p) { cout << "p(" << p.x << ";" << p.y << ")/n"; } // печать координат треугольника void Print_triangle(Triangle trian) { Print_point(trian.p1); Print_point(trian.p2); Print_point(trian.p3); cout << "\n\n"; } //выводим точки прямоугольника на экран( обращаем внимание,что третья точка строится по такому принципу: ордината третьей точки равна ординате 2-ой точки //а ее абсцисса = абсциссе 1-ой точки) - таким образом создастся перпендикуляр и прямой угол нашему треугольнику void Print_trian(Triangle trian) { cout << trian.p1.x << " " << trian.p1.y << "\n"; cout << trian.p2.x << " " << trian.p2.y << "\n"; cout << trian.p3.x << " " << trian.p3.y << "\n\n"; } //рандом точки прямоугольника (2-ух точек - они образуют диагональ) Rectangle GetRandomRectangle(int min,int max) { Rectangle rect; rect.p1 = GetRandomPoint(min,max); rect.p2 = GetRandomPoint(min,max); rect.p3.x = rect.p2.x; rect.p3.y = rect.p1.y; rect.p4.y = rect.p2.y; rect.p4.x = rect.p1.x; return rect; } // печать координат прямоугольника void Print_rectangle(Rectangle rect) { Print_point(rect.p1); Print_point(rect.p2); Print_point(rect.p3); Print_point(rect.p4); cout << "\n\n"; } //выводим точки на экран на двук осях координат (в данном случае принцип идентичен приципу с прямоуг.треугольником) void Print_rectan(Rectangle rect) { cout << rect.p1.x << " " << rect.p1.y << "\n"; cout << rect.p2.x << " " << rect.p2.y << "\n"; cout << rect.p3.x << " " << rect.p3.y << "\n"; cout << rect.p4.x << " " << rect.p4.y << "\n\n"; } //Задаем рандомный центр и радиус (для центра - точку,для радиуса - целочисленное значение) Circle GetRandomCircle(int min,int max) { Circle circle; circle.p = GetRandomPoint(min,max); circle.radius = GetRandomint(min,max); return circle; } //Печать центра и радиуса void Print_cir(Circle circle) { Print_point(circle.p); cout << "radius = " << circle.radius << "\n"; } //Выводим центр и радиус на экран void Print_circle(Circle circle) { cout << circle.p.x << " " << circle.p.y << "\n"; cout << circle.radius << " " << "\n\n"; } int main() { //подключаем русский язык и выводим конечный результат получения точек вершин наших фишур setlocale(LC_CTYPE, "rus"); srand(time(NULL)); Triangle trian = GetRandomTriangle(0,6); Rectangle rect = GetRandomRectangle(-10,10); Circle circle = GetRandomCircle(1,8); cout << "Координаты треугольника:\n"; Print_trian(trian); cout << "Координаты прямоугольника:\n"; Print_rectan(rect); cout << "Координаты центра окружности и его радиус:\n"; Print_circle(circle); return 0; }
Андеграунд_неактив3578089, В плане?просто я на первом курсе,я пока дуб во всем,извиняюсь,если очень криво