Найти площади разных фигур

Задача

В зависимости от выбора пользователя вычислить площадь круга, прямоугольника или треугольника. Для вычисления площади каждой фигуры должна быть написана отдельная функция.

Пояснение к задаче и алгоритм решения

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

Для вычисления площади круга необходим радиус, для прямоугольника - длины двух сторон, для треугольника (если площадь вычисляется по формуле Герона) - длины трех сторон. Следовательно, функции будут различаться по количеству параметров.

Площадь круга вычисляется по формуле πr2.
Площадь прямоугольника является произведением двух его сторон.
Площадь треугольника по формуле Герона рассчитывается через полупериметр (p=(a+b+c)/2, где a, b и c - длины сторон треугольника) по формуле sqrt(p * (p-a) * (p-b) * (p-c)), где sqrt - квадратный корень.

В основной ветке программы должен происходить выбор, площадь какой фигуры необходимо вычислить. В зависимости от выбора будут запрашиваться необходимые данные (радиус или длины сторон) и передаваться в соответствующую функцию. Возвращаемое из функции значение будет выводиться на экран.

Исходный код на языке программирования Pascal

var
    choice: char;
    a, x, y, z: real;
 
function circle(r: real): real;
    begin
        circle := pi * sqr(r);
    end;
 
function rectangle(a, b: real): real;
    begin
        rectangle := a * b
    end;
 
function triangle(a, b, c: real): real;
    var x: real;
    begin
        x := (a + b + c) / 2;
        triangle := sqrt(x * (x - a) * (x - b) * (x - c))
    end;
 
begin
    write('Круг(c), прямоугольник(r) или треугольник(t): ');
    readln(choice);
    case choice of
        'c': begin
            write('Радиус: ');
            readln(x);
            a := circle(x)
        end;
        'r': begin
            write('Длина и ширина: ');
            readln(x, y);
            a := rectangle(x, y)
        end;
        't': begin
            write('Стороны: ');
            readln(x, y, z);
            a := triangle(x, y, z)
        end
    end;
    writeln('Площадь: ', a:4:2);
end.

Пример(ы) выполнения программы на языке Pascal

Круг(c), прямоугольник(r) или треугольник(t): c
Радиус: 2
Площадь: 12.57


Круг(c), прямоугольник(r) или треугольник(t): r
Длина и ширина: 3.85 12.55
Площадь: 48.32


Круг(c), прямоугольник(r) или треугольник(t): t
Стороны: 3 4 6.5
Площадь: 4.17

Особенности решения на языке программирования Pascal

В Паскале существует встроенная константа π (pi).

Исходный код на языке программирования C

#include <stdio.h>
#include <math.h>
 
float circle(float);
float rectangle(float, float);
float triangle(float, float, float);
 
main() {
    char ch;
    float a,b,c;
    printf("Круг(c), прямоугольник(r) или треугольник(t): ");
    scanf("%c", &ch);
    switch (ch) {
        case 'c':
            printf("Радиус: ");
            scanf("%f", &a);
            printf("Площадь круга %.2f\n", circle(a));
            break;
        case 'r':
            printf("Длина и ширина: ");
            scanf("%f%f", &a, &b);
            printf("Площадь прямоугольника: %.2f\n", rectangle(a,b));
            break;
        case 't':
            printf("Стороны: ");
            scanf("%f%f%f", &a, &b, &c);
            printf("Площадь треугольника: %.2f\n", triangle(a,b,c));
            break;
    }
}
 
float circle(float r) {
   return 3.14159 * r * r;
}
 
float rectangle(float x, float y) {
    return x * y;
}
 
float triangle(float x, float y, float z) {
    float p;
    p = (x+y+z) / 2;
    return sqrt(p * (p-x) * (p-y) * (p-z));
}

Особенности решения на языке программирования C

Компилировать с ключом -lm.

Исходный код на языке программирования Python

import math
 
def circle(r):
    return math.pi * r**2
 
def rectangle(a, b):
    return a*b
 
def triangle(a, b, c):
    p = (a+b+c)/2
    return math.sqrt(p * (p-a) * (p-b) * (p-c))
 
choice = input("Круг(к), прямоугольник(п) или треугольник(т): ")
if choice == 'к':
    rad = float(input("Радиус: "))
    print("Площадь круга: %.2f" % circle(rad))
elif choice == 'п':
    l = float(input("Длина: "))
    w = float(input("Ширина: "))
    print("Площадь прямоугольника: %.2f" % rectangle(l,w))
elif choice == 'т':
    AB = float(input("Первая сторона: "))
    BC = float(input("Вторая сторона: "))
    CA = float(input("Третья сторона: "))
    print("Площадь треугольника: %.2f" % triangle(AB,BC,CA))

Исходный код на языке программирования КуМир

алг площадь фигуры
нач
  вещ а, б, в
  сим фигура
  вывод "Круг(к), прямоугольник(п), треугольник(т): "
  ввод фигура
  если фигура = "к" то
    вывод "Радиус: "
    ввод а
    вывод "Площадь круга: ", круг(а)
    иначе
     если фигура = "п" то
       вывод "Длина: "
       ввод а
       вывод "Ширина: "
       ввод б
       вывод "Площадь прямоугольника: ", прямоугольник(а,б)
      иначе
       если фигура = "т" то
         вывод "Сторона 1: "
         ввод а
         вывод "Сторона 2: "
         ввод б
         вывод "Сторона 3: "
         ввод в
         вывод "Площадь треугольника: ", треугольник(а,б,в)
       все
     все
  все
кон
 
алг вещ круг (вещ р)
нач
  знач := 3.14 * р**2
кон
алг вещ прямоугольник (вещ д, вещ ш)
нач
  знач := д * ш
кон
алг вещ треугольник (вещ ст1, вещ ст2, вещ ст3)
нач
  вещ п
  п := (ст1 + ст2 + ст3) / 2
  знач := sqrt(п * (п - ст1) * (п - ст2) * (п - ст3))
кон

Исходный код на языке программирования Basic

input "Круг (к), прямоугольник (п) или треугольник (т): ", ch$
if ch$ = "к" then
        gosub circ
else
        if ch$ = "п" then
                gosub rectangle
        else
                if ch$ = "т" then
                        gosub triangle
                endif
        endif
endif
end
 
circ:
        input "Радиус: ", r
        print "Площадь круга: " + (pi * r^2)
return
 
rectangle:
        input "Длина: ", a
        input "Ширина: ", b
        print "Площадь прямоугольника: " + (a*b)
return
 
triangle:
        input "Первая сторона: ", a
        input "Вторая сторона: ", b
        input "Третья сторона: ", c
        p = (a+b+c) / 2
        s = sqrt(p * (p-a) * (p-b) * (p-c))
        print "Площадь треугольника: " + s
return

Особенности решения на языке программирования Basic

В функции ничего не передается и ничего из них не возвращается.

Тема

Функции

Уровень сложности

Простой

Дата публикации