Вычисление площади геометрических фигур в Pascal
Написать программу, которая в зависимости от выбора пользователя вычисляет площадь одной из трех геометрических фигур: прямоугольника, треугольника или круга.
Примеры выполнения программы
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.