По методичке
Предыдущая лабораторная
#include
#include
using namespace std;
//структура описывающая прямоугольник
struct Rectangle
{
double x1, y1, x2, y2;
};
//периметр прямоугольника
double calc_perimeter(Rectangle r)
{
double a = int(r.x2 - r.x1);
double b = int(r.y2 - r.y1);
return 2 * (a + b);
}
//площадь прямоугольника
double calc_square(Rectangle r)
{
double a = int(r.x2 - r.x1);
double b = int(r.y2 - r.y1);
return a * b;
}
//создать прямоугольник
Rectangle input_rectangle()
{
Rectangle r;
cout « "\nЛевый верхний угол. Введите x y: ";
cin » r.x1 » r.y1;
cout « "Нижний правый угол. Введите x y: ";
cin » r.x2 » r.y2;
return r;
}
//вывод данных прямоугольника
void print_rectangle(Rectangle r)
{
cout « "Прямоугольник с вершинами: (" « r.x1 « "; " « r.y1 « "), (" « r.x2 « "; " « r.y2 « ")\n";
}
//получить больший по периметру
Rectangle cmp_by_perimeter(Rectangle r1, Rectangle r2)
{
//вычисляем периметр обоих
double p1 = calc_perimeter(r1);
double p2 = calc_perimeter(r2);
cout « p1 « " " « p2 « endl;
if (p1 >= p2)
return r1;
else
return r2;
}
//сумма площадей
double sum_squares(Rectangle r1, Rectangle r2)
{
double s1 = calc_square(r1);
double s2 = calc_square(r2);
return s1 + s2;
}
int main()
{
setlocale(LC_ALL, "Russian");
int command = 1;
while (command != 0)
{
cout « "\n1 - Сравнить два прямоугольника по периметру\n";
cout « "2 - Сумма площадей двух прямоугольников\n";
cout « "0 - Выход\n";
cout « "\nВведите команду: ";
cin » command;
switch (command)
{
case 1:
{
//вводим два прямоугольника
Rectangle r1, r2;
cout « "\nПрямоугольник 1\n";
r1 = input_rectangle();
cout « "\nПрямоугольник 2\n";
r2 = input_rectangle();
cout « endl;
print_rectangle(r1);
print_rectangle(r2);
cout « "\nПериметр больше: ";
print_rectangle(cmp_by_perimeter(r1, r2));
break;
}
case 2:
{
//вводим два прямоугольника
Rectangle r1, r2;
cout « "\nПрямоугольник 1\n";
r1 = input_rectangle();
cout « "\nПрямоугольник 2\n";
r2 = input_rectangle();
cout « endl;
print_rectangle(r1);
print_rectangle(r2);
cout « "\nСумма площадей: " « sum_squares(r1, r2) « endl;
break;
}
case 0:
{
break;
}
default:
{
cout « "Неверная команда\n";
break;
}
}
}
return 0;
}