Описать тип struct - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Описать тип struct Rectangle, задающий на плоскости замкнутый прямоугольник со сторонами, параллельными координатным осям и габаритами (x–, x+) и (y–, y+) по осям абсцисс и ординат соответственно. Реализовать в виде отдельных функций следующие операции над переменными этого типа: а) вычисление площади прямоугольника; б) построение прямоугольника по паре точек, задающих любую пару противолежащих вершин;

в) построение пересечения двух прямоугольников;

г) проверка принадлежности точки прямоугольнику;

д) проверка включения одного прямоугольника в другой;

е) поворот прямоугольника относительно центра на прямой угол.

С использованием описанных типа и функций разработать программу, которая для заданного набора из N прямоугольников находит:

1) площадь наименьшего из прямоугольников, содержащего в себе один и более прямоугольников из заданного набора; 2) все пары прямоугольников, совпадающих с точностью до поворота напрямой угол.

Не знаю как сделать пункты, выделенные жирным. Помогите

Решение задачи: «Описать тип struct»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. typedef struct{
  5. int x;//координата
  6. int y;//координата
  7. }Rectangle;
  8. Rectangle q[100];
  9. typedef struct{
  10.     int x;
  11.     int y;
  12. }Point;
  13. Point A;
  14. Point B;
  15.  
  16. void main()
  17. {
  18.     SetConsoleOutputCP(1251);
  19.  
  20.     int N;//количество прямоугольников
  21.     int i;//счетчик
  22.     printf("Сколько дано прямоугольников?");
  23.     scanf("%d",&N);
  24.  
  25.     for(i=0;i<N;i++)
  26.     {
  27.         printf("Введите габариты: ");
  28.         scanf("%d%d",&q[i].x,&q[i].y);
  29.     }
  30.     system("pause");
  31. }
  32.  
  33. /*функция а)вычисление площади прямоугольника*/
  34. float Area(Rectangle q){
  35.     float S=0;
  36.     S=2*fabs(q.x)*2*fabs(q.y);
  37.     return S;
  38. }
  39. /*функция б)построение прямоугольника по паре точек, задающих любую пару противолежащих вершин*/
  40. Rectangle For_two_points(Point A,Point B){
  41.     Rectangle P;
  42.     P.x=fabs((B.x-A.x)/2);
  43.     P.y=fabs((B.y-A.y)/2);
  44.     return P;
  45. }
  46. /*функция в)построение пересечения двух прямоугольников*/
  47. Rectangle Crossing(){
  48.  
  49. }
  50. /*функция г) проверка принадлежности точки прямоугольнику*/
  51. int Point_in_rectangle(){
  52.  
  53. }
  54. /*функция д) проверка включения одного прямоугольника в другой*/
  55. int Inside(){
  56.  
  57. }
  58. /*функция е) поворот прямоугольника относительно центра на прямой угол*/
  59. Rectangle Turning(Rectangle q){
  60. int c;
  61. c=q.x;
  62. q.x=q.y;
  63. q.y=c
  64. }

Объяснение кода листинга программы

  1. Включаемые заголовочные файлы: ,
  2. Описание структуры: typedef struct{ int x; int y; } Rectangle;
  3. Массив прямоугольников: Rectangle q[100];
  4. Описание структуры точки: typedef struct{ int x; int y; } Point;
  5. Точки A и B: Point A; Point B;
  6. Функция ввода количества прямоугольников: void main()
  7. Функция ввода размеров прямоугольника: void main()
  8. Функция вычисления площади прямоугольника: float Area(Rectangle q)
  9. Функция построения прямоугольника по двум точкам: Rectangle For_two_points(Point A,Point B)
  10. Функция построения пересечения двух прямоугольников: Rectangle Crossing()
  11. Функция проверки принадлежности точки прямоугольнику: int Point_in_rectangle()
  12. Функция проверки включения одного прямоугольника в другой: int Inside()
  13. Функция поворота прямоугольника относительно центра на прямой угол: Rectangle Turning(Rectangle q)
  14. Вывод на экран прямоугольников: for(i=0;i<N;i++) printf(x=%d y=%d\n,q[i].x,q[i].y);
  15. Основная функция программы: main()
  16. Ввод числа для функции Area: scanf(%d,&N);
  17. Ввод размеров прямоугольников: for(i=0;i<N;i++) scanf(%d%d,&q[i].x,&q[i].y);
  18. Завершение работы программы: system(pause);
  19. Вычисление площади прямоугольника: S=2fabs(q.x)2*fabs(q.y);
  20. Построение прямоугольника по двум точкам: P.x=fabs((B.x-A.x)/2); P.y=fabs((B.y-A.y)/2);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы