Упростить программу. Избавиться от Goto - Pascal ABC
Формулировка задачи:
Нужно, чтобы не было лейбел, но программа не меняла своей сути . ОЧЕНЬ СРОЧНО!!!
Листинг программы
- Program slogno;
- label dl3,dl2;
- 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;
- label 1;
- var i,n:integer; f,r:real;
- begin
- n:=3;
- s1:=0;
- f:=0.0001;
- h:=(b-a)/n;
- povt(a,b,n,sum);
- 1:n:=2*n ;
- h:=(b-a)/n;
- s1:=sum;
- povt(a,b,n,sum);
- if f<abs(sum-s1) then goto 1 else 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;
- begin
- dl3:menu(k);
- vibor(k);
- vivod(sum);
- writeln('Выбрать еще раз?');
- writeln('1 ---Да');
- writeln('0 --- Нет');
- readln(v);
- if v=1 then goto dl3;
- if v=0 then writeln('Программа отработала');
- if (v<0) or (v>1) then goto dl3
- end;
- end.
Решение задачи: «Упростить программу. Избавиться от 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д