Вычисление площади геометрических фигур
Написать программу, которая в зависимости от выбора пользователя вычисляет площадь одной из трех геометрических фигур: прямоугольника, треугольника или круга.
Примеры выполнения программы
1 - прямоугольник, 2 - треугольник, 3 - круг: 1
Длины сторон: 4.5 3
Площадь: 13.50
1 - прямоугольник, 2 - треугольник, 3 - круг: 2
Длины сторон: 3 4 5.6
Площадь: 5.79
1 - прямоугольник, 2 - треугольник, 3 - круг: 3
Диаметр: 1.55
Площадь: 1.89
1 - прямоугольник, 2 - треугольник, 3 - круг: 7
Ошибка ввода
Для вычисления площади прямоугольника вводятся длины двух его сторон, треугольника - трех сторон, круга - вводится диаметр.
Площадь прямоугольника: area = a * b
Площадь треугольника: area = sqrt(s * (s - a) * (s - b) * (s - c)), где s = (a + b + c) / 2. В языке Pascal функция sprt() извлекает квадратный корень.
Площадь круга: area = pi * sqr(d) / 4. Функция sqr() возводит в квадрат.
Пользователь осуществляет выбор фигуры, площадь которой он хочет получить, путем ввода цифр 1, 2 или 3.
Для выбора ветви вычисления используется конструкция условного оператора if-else, которая включает вложенный оператор ветвления.
if 1 then
вычисление площади прямоугольника
else
if 2 then
вычисление площади треугольника
else
if 3 then
вычисление площади круга
else
ошибка
Программа на языке Паскаль
var
figure: byte;
area, s, a, b, c, d: real;
ok: boolean;
begin
ok := TRUE;
write('1 - прямоугольник, 2 - треугольник, 3 - круг: ');
readln(figure);
if figure = 1 then begin
write('Длины сторон: ');
readln(a, b);
area := a * b
end
else
if figure = 2 then begin
write('Длины сторон: ');
readln(a, b, c);
s := 0.5 * (a + b + c);
area := sqrt(s * (s - a) * (s - b) * (s - c))
end
else
if figure = 3 then begin
write('Диаметр: ');
readln(d);
area := PI * sqr(d) / 4
end
else
ok := FALSE;
if ok then
writeln('Площадь: ', area:6:2)
else
writeln('Ошибка ввода');
end.
Примечание. При вводе сторон треугольника должно быть соблюдено правило: сумма любых двух сторон должна быть больше третьей. Иначе возникает ошибка.
Поскольку выбор ветви определяется не выражением, а определенным значением целочисленной переменной, данную задачу также можно решить с помощью другого условного оператора - case.
var
figure: byte;
area, s, a, b, c, d: real;
ok: boolean;
begin
ok := TRUE;
write('1 - прямоугольник, 2 - треугольник, 3 - круг: ');
readln(figure);
case figure of
1: begin
write('Длины сторон: ');
readln(a, b);
area := a * b;
end;
2: begin
write('Длины сторон: ');
readln(a, b, c);
s := 0.5 * (a + b + c);
area := sqrt(s * (s - a) * (s - b) * (s - c));
end;
3: begin
write('Диаметр: ');
readln(d);
area := PI * sqr(d) / 4;
end;
else
ok := FALSE;
end;
if ok then
writeln('Площадь: ', area:6:2)
else
writeln('Ошибка ввода');
end.