Описать тип struct - C (СИ)
Формулировка задачи:
Описать тип struct Rectangle, задающий на плоскости замкнутый прямоугольник со сторонами, параллельными координатным осям и габаритами (x–, x+) и (y–, y+) по осям абсцисс и ординат соответственно. Реализовать в виде отдельных функций следующие операции над переменными этого типа:
а) вычисление площади прямоугольника;
б) построение прямоугольника по паре точек, задающих любую пару противолежащих вершин;
в) построение пересечения двух прямоугольников;
г) проверка принадлежности точки прямоугольнику;д) проверка включения одного прямоугольника в другой;
е) поворот прямоугольника относительно центра на прямой угол.
С использованием описанных типа и функций разработать программу, которая для заданного набора из N прямоугольников находит:1) площадь наименьшего из прямоугольников, содержащего в себе один и более прямоугольников из заданного набора; 2) все пары прямоугольников, совпадающих с точностью до поворота напрямой угол.
Не знаю как сделать пункты, выделенные жирным. ПомогитеРешение задачи: «Описать тип struct»
textual
Листинг программы
- #include <stdio.h>
- #include <windows.h>
- typedef struct{
- int x;//координата
- int y;//координата
- }Rectangle;
- Rectangle q[100];
- typedef struct{
- int x;
- int y;
- }Point;
- Point A;
- Point B;
- void main()
- {
- SetConsoleOutputCP(1251);
- int N;//количество прямоугольников
- int i;//счетчик
- printf("Сколько дано прямоугольников?");
- scanf("%d",&N);
- for(i=0;i<N;i++)
- {
- printf("Введите габариты: ");
- scanf("%d%d",&q[i].x,&q[i].y);
- }
- system("pause");
- }
- /*функция а)вычисление площади прямоугольника*/
- float Area(Rectangle q){
- float S=0;
- S=2*fabs(q.x)*2*fabs(q.y);
- return S;
- }
- /*функция б)построение прямоугольника по паре точек, задающих любую пару противолежащих вершин*/
- Rectangle For_two_points(Point A,Point B){
- Rectangle P;
- P.x=fabs((B.x-A.x)/2);
- P.y=fabs((B.y-A.y)/2);
- return P;
- }
- /*функция в)построение пересечения двух прямоугольников*/
- Rectangle Crossing(){
- }
- /*функция г) проверка принадлежности точки прямоугольнику*/
- int Point_in_rectangle(){
- }
- /*функция д) проверка включения одного прямоугольника в другой*/
- int Inside(){
- }
- /*функция е) поворот прямоугольника относительно центра на прямой угол*/
- Rectangle Turning(Rectangle q){
- int c;
- c=q.x;
- q.x=q.y;
- q.y=c
- }
Объяснение кода листинга программы
- Включаемые заголовочные файлы:
, - Описание структуры: typedef struct{ int x; int y; } Rectangle;
- Массив прямоугольников: Rectangle q[100];
- Описание структуры точки: typedef struct{ int x; int y; } Point;
- Точки A и B: Point A; Point B;
- Функция ввода количества прямоугольников: void main()
- Функция ввода размеров прямоугольника: void main()
- Функция вычисления площади прямоугольника: float Area(Rectangle q)
- Функция построения прямоугольника по двум точкам: Rectangle For_two_points(Point A,Point B)
- Функция построения пересечения двух прямоугольников: Rectangle Crossing()
- Функция проверки принадлежности точки прямоугольнику: int Point_in_rectangle()
- Функция проверки включения одного прямоугольника в другой: int Inside()
- Функция поворота прямоугольника относительно центра на прямой угол: Rectangle Turning(Rectangle q)
- Вывод на экран прямоугольников: for(i=0;i<N;i++) printf(
x=%d y=%d\n
,q[i].x,q[i].y); - Основная функция программы: main()
- Ввод числа для функции Area: scanf(
%d
,&N); - Ввод размеров прямоугольников: for(i=0;i<N;i++) scanf(
%d%d
,&q[i].x,&q[i].y); - Завершение работы программы: system(
pause
); - Вычисление площади прямоугольника: S=2fabs(q.x)2*fabs(q.y);
- Построение прямоугольника по двум точкам: P.x=fabs((B.x-A.x)/2); P.y=fabs((B.y-A.y)/2);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д