: найдите площадь треугольника по трём сторонам, которые вводит пользователь
примечание:
все стороны - целые положительные числа
если треугольник с введёнными сторонами не существует, на экран необходимо вывести 0
ответ при необходимости округлите с точностью до двух знаков после запятой
подсказка: для решения этой рекомендую воспользоваться формулой геррона
входной сигнал образца:
1 2 3
выход образца:
0
a = 3, b = 1, c = 2
if a > b (3 > 1): M = a (M = 3, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
if c > b (2 > 1): M = c (M = 2, условие сработало - эту ветку выполняем)
else: M = b (условие сработало - эту ветку пропускаем)
M = 2
if c > M: M = c
a = 3, b = 1, c = 2
if a > b (3 > 1): M = a (M = 3)
else: M = b (условие сработало - эту ветку пропускаем)
if c > M (2 > 3): M = c (условие НЕ сработало - эту ветку пропускаем)
M = 3
Объяснение:
В первой программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают второе и третье число и переменной М присваивают значение большего из них. Если первое и третье число больше второго числа, то программа выдаёт неверный результат.
Во второй программе сначала сравнивают первое и второе число и переменной М присваивают значение большего из них. Затем сравнивают третье число и переменную М и переменной М присваивают значение третьего числа, если оно больше. Программа выдаёт верный результат.
Var n:longint;
Function MinDigit(n:longint):integer;
var s,a:string; c,i:integer;
begin
str(n,s);
a:=s[1];
for i:=2 to length(s) do
if s[i]<a then a:=s[i];
val(a,n,c);
MinDigit:=n;
end;
Function MaxDigit(n:longint):integer;
var s,a:string; c,i:integer;
begin
str(n,s);
a:=s[1];
for i:=2 to length(s) do
if s[i]>a then a:=s[i];
val(a,n,c);
MaxDigit:=n;
end;
Begin
readln(n);
writeln(MinDigit(n),' ',MaxDigit(n));
End.
По факту переменную "c" можно убрать из функций и использовать вместо нее уже не нужную в конце "i", таким образом избавившись от одной переменной. Но это не принципиально на самом деле, к тому же так понятней, какая переменная за что отвечает.