Помогите исправить мелкие недочеты в задачах по программированию (Pascal ABC)
ЗАДАЧА 1 (Проблема: не обрабатывает случай деления на 0):
var op:integer; a,b:real; i:integer;
Function Calc(var a,b:real; op:integer):real;
var c:real;
begin
case op of
1: c:=a-b;
2: c:=a*b;
3: c:=a/b
else c:=a+b;
end;
calc:=c;
end;
begin
for i:=1 to 3 do
begin
writeln('1-вычитание 2-умножение 3-деление; сложение');
writeln('Введите номер операции:');
readln(op);
write('введите число a= ');
readln(a);
write('введите число b= ');
readln(b);
writeln('результат введенной операции равен: ',calc(a,b,op));
writeln;
end;
end.
ЗАДАЧА 2 (Проблема: Неправильно считает периметр):
procedure p_i_s(x1,y1,x2,y2:real; var p,s:real);
begin
p:=abs((y1-y2)+(x1-x2))*2;
s:=abs(y1-y2)*abs(x1-x2);
end;
var x1,x2,y1,y2,p,s:real; i:byte;
begin
for i:=1 to 3 do
begin
write('Введите координаты первой вершины: ');
readln(x1,y1);
write('Ведите координаты второй вершины: ');
readln(x2,y2);
p:=0;
s:=0;
p_i_s(x1,y1,x2,y2,p,s);
writeln('Площадь прямоугольника: ',s);
writeln('Периметр прямоугольника: ',p);
writeln;
end;
end.
1/
Заменить
3: c:=a/b
на
3:if b<>0 then c:=a/b else Println('Деление на ноль');
За тебя тут никто ничего делать не будет.