Написать и протестировать функцию, которая возвращает указатель на новый прямоугольник - C (СИ)
Формулировка задачи:
Определить структуру, описывает прямоугольник со сторонами, параллельными осям координат (прямоугольник задается двумя точками - левою нижней и правой верхней). Написать и протестировать функцию, которая возвращает указатель на новый прямоугольник - область пересечения двух прямоугольников. Если пересечения нет, - возвращается NULL. никак не магу разобраться,помогите пожалуйста
Решение задачи: «Написать и протестировать функцию, которая возвращает указатель на новый прямоугольник»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> typedef struct { int x1; int y1; int x2; int y2; }rect; int maxr(int a, int b) { return a >= b ? a : b; } int minr(int a, int b) { return a <= b ? a : b; } rect* func(rect *a, rect *b) { rect *c = (rect *)malloc(sizeof(rect)); c->x1 = maxr(b->x1, a->x1); //x1 c->y1 = maxr(b->y1, a->y1); //y1 c->x2 = minr(a->x2, b->x2); //x2 c->y2 = minr(a->y2, b->y2); //y2 if (c->x1 >= c->x2 || c->y1 >= c->y2) return NULL; return c; } int main() { rect a, b; rect *c; printf("a.x1="); scanf("%d", &a.x1); printf("a.y1="); scanf("%d", &a.y1); printf("a.x2="); scanf("%d", &a.x2); printf("a.y2="); scanf("%d", &a.y2); printf("b.x1="); scanf("%d", &b.x1); printf("b.y1="); scanf("%d", &b.y1); printf("b.x2="); scanf("%d", &b.x2); printf("b.y2="); scanf("%d", &b.y2); c = func(&a, &b); if (c != NULL) printf("x1=%d y1=%d\nx2=%d y2=%d\n", c->x1, c->y1, c->x2, c->y2); else puts("NULL"); free(c); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и stdlib.h
- Определяется структура rect, которая содержит поля для хранения координат прямоугольника
- Определяются функции maxr и minr, которые возвращают максимальное и минимальное значение из двух соответственно
- Определяется функция func, которая принимает два указателя на структуры rect и возвращает указатель на новую структуру rect, которая содержит минимальные и максимальные значения координат из двух прямоугольников
- В функции main, с помощью scanf, пользователю предлагается ввести координаты двух прямоугольников
- Вызывается функция func, передавая ей указатели на структуры rect, заполненные пользователем
- Если функция func вернула не NULL, то выводятся координаты нового прямоугольника на экран
- Вызов функции free освобождает память, выделенную под новый прямоугольник
- Программа завершается возвратом 0 из функции main, что означает успешное выполнение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д