Другие языки программирования и технологии

Паскаль. Простенькая задача

program lafel;
var
a,b,c,s,a2,b2,c2:real;
f,g,h:integer;
begin

readln(a,b,c);
a2:=a;
b2:=b;
c2:=c;
if (a>0) and (b>0) and (c>0) and (a<>c) and (b<>c) and (a<>b) then begin
begin
a:=sqr(a);
b:=sqr(b);
c:=sqr(c);
writeln(a,' ',b,' ',c);
end;
if (a2=0) and (b2=0) and (c2=0) then begin
begin
f:=5;
g:=20;
h:=15;
writeln (F,' ',G,' ',H);
end;
end;
end
else begin
s:=a2+b2+c2 ;
writeln(s);
end

end.
При вписывании трех нулей должен выводить результат 5 15 20, но выводит 0. Помогите, пожалуйста.
Сама задача звучит так: Составьте программу для решения следующей задачи. Введите с клавиатуры три числа. Если все числа отрицательны и не равны между собой, то замените числа их квадратами и выведите результаты на экран. Если все числа равны нулю, то сделайте их соответственно равными 5, 20, 15 и выведите результаты. Иначе, найдите и выведите сумму этих чисел.
что это за begin begin ??

тут вложенность ифов накосячена

для трех нулей выполняется только раздел елсе первого ифа:

if (a>0) and (b>0) and (c>0) and (a<>c) and (b<>c) and (a<>b)
then что-то там
else begin
s:=a2+b2+c2 ;
writeln(s);
end

тут, имхо, понятнее была бы следующая конструкция:

PROGRAM lafel;

{ объявления переменных }
VAR
a, b, c :Integer;

{ текст основной программы }
BEGIN

{ 1. ввод начальных данных }
Readln(a, b, c);

{ 2. обработка данных и вывод результата }

IF (a < 0) and (b < 0) and (c < 0) and (a <> b) and (a <> c) and (b <> c)
THEN BEGIN
WriteLn(a*a, ' ', b*b, ' ', c*c);
Exit;
END;

IF (a = 0) and (b = 0) and (c = 0)
THEN BEGIN
WriteLn('5 20 15');
Exit;
END;

WriteLn(a + b + c);

END.
{ конец текста основной программы }
РП
Роман Перминов
99 577
Лучший ответ
Денис Георгиевич Спасибо большое!
program lafel; uses crt;
var
a,b,c,s,a2,b2,c2:real;
f,g,h:integer;
begin

readln(a,b,c);
a2:=a;
b2:=b;
c2:=c;
if (a>0) and (b>0) and (c>0) and (a<>c) and (b<>c) and (a<>b) then
begin
a:=sqr(a);
b:=sqr(b);
c:=sqr(c);
writeln(a,' ',b,' ',c);
end else
if (a2=0) and (b2=0) and (c2=0) then
begin
f:=5;
g:=20;
h:=15;
writeln (F,' ',G,' ',H);
end

else begin
s:=a2+b2+c2 ;
writeln(s); end;
end.