Определить площадь сечения (общей части) прямоугольников - C (СИ)
Формулировка задачи:
Задано N прямоугольников со сторонами, параллельными осям координат (известны координатами верхнего левого и нижнего углов). Нужно определить площадь сечения (общей части) этих прямокутницив.
Решение задачи: «Определить площадь сечения (общей части) прямоугольников»
textual
Листинг программы
#include <stdio.h>
int main ()
{
int a[100][100]={0}, ii, i, j, N, x1,y1,x2,y2, s=0;
scanf("%d", &N);
for(ii=0; ii<N; ii++)
{
scanf("%d%d%d%d", &x1,&y1,&x2,&y2);
for(i=0; i<100; i++)
for(j=0; j<100; j++)
if(i<y2 || i>=y1 || j<x1 || j>=x2)
a[i][j]=1;
}
for(i=0; i<100; i++)
for(j=0; j<100; j++)
if(a[i][j]==0)
s++;
printf("%d\n", s);
}
Объяснение кода листинга программы
Вывод:
- Подключение необходимых библиотек для работы с вводом/выводом (stdio.h).
- Объявление переменных:
a- массив 100x100, инициализированный нулями, используемый для отслеживания прямоугольников.ii- счетчик для внешнего цикла, который считывает количество прямоугольников.i,j- счетчики для внутренних циклов, используемые для обхода массива.N- количество прямоугольников, считываемое с помощью функцииscanf.x1,y1,x2,y2- координаты прямоугольников, считываемые с помощью функцииscanf.s- счетчик, используемый для подсчета площади.
- Считывание количества прямоугольников с помощью функции
scanf. - Внешний цикл, который выполняется N раз, считывая координаты каждого прямоугольника.
- Внутренний цикл, который перебирает каждый элемент массива
a, устанавливая его равным 1, если элемент находится внутри одного из прямоугольников. - Внутренний цикл, который перебирает каждый элемент массива
a, и если элемент равен 0, увеличивает значение счетчикаs. - Вывод значения счетчика
sс помощью функцииprintf.