Вычисление площади геометрических фигур | Язык Паскаль

Вычисление площади геометрических фигур

Написать программу, которая в зависимости от выбора пользователя вычисляет площадь одной из трех геометрических фигур: прямоугольника, треугольника или круга.

Примеры выполнения программы

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.