Упростить программу. Избавиться от Goto - Pascal ABC
Формулировка задачи:
Нужно, чтобы не было лейбел, но программа не меняла своей сути . ОЧЕНЬ СРОЧНО!!!
Решение задачи: «Упростить программу. Избавиться от Goto»
textual
Листинг программы
program slogno;
var
s, x: real;
a, b, h, z, s1, sum: real;
i, v, k, n, g, c, fiks: integer;
procedure menu(k: integer);
begin
writeln('1.Выполнение вычислений с заданным числом повторений');
writeln('2.Выполнение вычислений с заданной точностью');
writeln('Введите номер пункта:');
readln(g);
end;
procedure vivod(var sum: real);
begin
writeln('Sum=', sum);
end;
function integral(x: real): real;
begin
integral := 1 / sqrt(1 + 3 * x + 2 * x * x);
end;
procedure povt(var a, b: real; var n: integer; var sum: real);
var
h, s: real;
i: integer;
begin
x := a;
s := 0;
sum := 0;
h := (b - a) / n;
for i := 1 to n do
begin
s := integral(x) * h;
x := x + h;
sum := sum + s;
end;
end;
procedure tocn(var a, b, s1: real);
var
sum: real;
var
i, n: integer;
f, r: real;
begin
n := 3;
s1 := 0;
f := 0.0001;
h := (b - a) / n;
povt(a, b, n, sum);
while true do
begin
n := 2 * n;
h := (b - a) / n;
s1 := sum;
povt(a, b, n, sum);
if f >= abs(sum - s1) then
break;
end;
writeln('S1=', s1:3:5);
end;
procedure vibor(var k: integer);
begin
case g of
1: povt(a, b, n, sum);
2: tocn(a, b, s1);
else writeln('Некоректный ввод')
end;
end;
//Основная программа
begin
a := 0;
b := 1;
n := 44;
while true do
begin
menu(k);
vibor(k);
vivod(sum);
writeln('Выбрать еще раз?');
writeln('1 ---Да');
writeln('0 --- Нет');
readln(v);
if v = 0 then
begin
writeln('Программа отработала');
exit;
end;
end;
end.