Упростить программу. Избавиться от Goto - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Нужно, чтобы не было лейбел, но программа не меняла своей сути . ОЧЕНЬ СРОЧНО!!!
Листинг программы
  1. Program slogno;
  2. label dl3,dl2;
  3. var s,x:real; a,b,h,z,s1,sum:real;
  4. i,v,k,n,g,c,fiks:integer;
  5.  
  6. procedure menu(k:integer);
  7. begin
  8. writeln('1.Выполнение вычислений с заданным числом повторений');
  9. writeln('2.Выполнение вычислений с заданной точностью');
  10. writeln('Введите номер пункта:');
  11. readln(g);
  12. end;
  13. procedure vivod (var sum:real);
  14. begin
  15. writeln('Sum=',sum);
  16. end;
  17. function integral(x:real):real;
  18. begin
  19. integral:=1/sqrt(1+3*x+2*x*x);
  20. end;
  21. Procedure povt(var a,b:real; var n:integer; var sum:real);
  22. var h,s:real;
  23. i:integer;
  24. begin
  25. x:=a;
  26. s:=0;
  27. sum:=0;
  28. h:=(b-a)/n;
  29. for i:=1 to n do
  30. begin
  31. s:=integral(x)*h;
  32. x:=x+h;
  33. sum:=sum+s;
  34. end;
  35. end;
  36.  
  37. procedure tocn (var a,b,s1:real);
  38. var sum:real;
  39. label 1;
  40. var i,n:integer; f,r:real;
  41. begin
  42. n:=3;
  43. s1:=0;
  44. f:=0.0001;
  45. h:=(b-a)/n;
  46. povt(a,b,n,sum);
  47. 1:n:=2*n ;
  48. h:=(b-a)/n;
  49. s1:=sum;
  50. povt(a,b,n,sum);
  51. if f<abs(sum-s1) then goto 1 else writeln('S1=',s1:3:5);
  52. end;
  53. procedure vibor (var k:integer);
  54. begin
  55. case g of
  56. 1:povt(a,b,n,sum);
  57. 2:tocn (a,b,s1);
  58. else writeln('Некоректный ввод')
  59. end;
  60. end;
  61. //Основная программа
  62. begin
  63. a:=0;
  64. b:=1;
  65. n:=44;
  66. begin
  67. dl3:menu(k);
  68. vibor(k);
  69. vivod(sum);
  70. writeln('Выбрать еще раз?');
  71. writeln('1 ---Да');
  72. writeln('0 --- Нет');
  73. readln(v);
  74. if v=1 then goto dl3;
  75. if v=0 then writeln('Программа отработала');
  76. if (v<0) or (v>1) then goto dl3
  77. end;
  78. end.

Решение задачи: «Упростить программу. Избавиться от Goto»

textual
Листинг программы
  1. program slogno;
  2.  
  3. var
  4.   s, x: real;
  5.   a, b, h, z, s1, sum: real;
  6.   i, v, k, n, g, c, fiks: integer;
  7.  
  8.  
  9. procedure menu(k: integer);
  10. begin
  11.   writeln('1.Выполнение вычислений с заданным числом повторений');
  12.   writeln('2.Выполнение вычислений с заданной точностью');
  13.   writeln('Введите номер пункта:');
  14.   readln(g);
  15. end;
  16.  
  17. procedure vivod(var sum: real);
  18. begin
  19.   writeln('Sum=', sum);
  20. end;
  21.  
  22. function integral(x: real): real;
  23. begin
  24.   integral := 1 / sqrt(1 + 3 * x + 2 * x * x);
  25. end;
  26.  
  27. procedure povt(var a, b: real; var n: integer; var sum: real);
  28. var
  29.   h, s: real;
  30.   i: integer;
  31. begin
  32.   x := a;
  33.   s := 0;
  34.   sum := 0;
  35.   h := (b - a) / n;
  36.   for i := 1 to n do
  37.   begin
  38.     s := integral(x) * h;
  39.     x := x + h;
  40.     sum := sum + s;
  41.   end;
  42. end;
  43.  
  44.  
  45. procedure tocn(var a, b, s1: real);
  46. var
  47.   sum: real;
  48. var
  49.   i, n: integer;
  50.   f, r: real;
  51. begin
  52.   n := 3;
  53.   s1 := 0;
  54.   f := 0.0001;
  55.   h := (b - a) / n;
  56.   povt(a, b, n, sum);
  57.   while true do
  58.   begin
  59.     n := 2 * n;
  60.     h := (b - a) / n;
  61.     s1 := sum;
  62.     povt(a, b, n, sum);
  63.     if f >= abs(sum - s1) then
  64.       break;
  65.   end;    
  66.   writeln('S1=', s1:3:5);
  67. end;
  68.  
  69. procedure vibor(var k: integer);
  70. begin
  71.   case g of
  72.     1: povt(a, b, n, sum);
  73.     2: tocn(a, b, s1);
  74.   else writeln('Некоректный ввод')
  75.   end;
  76. end;
  77.  
  78. //Основная программа
  79. begin
  80.   a := 0;
  81.   b := 1;
  82.   n := 44;
  83.   while true do
  84.   begin
  85.     menu(k);
  86.     vibor(k);
  87.     vivod(sum);
  88.     writeln('Выбрать еще раз?');
  89.     writeln('1 ---Да');
  90.     writeln('0 --- Нет');
  91.     readln(v);
  92.     if v = 0 then
  93.     begin
  94.       writeln('Программа отработала');
  95.       exit;
  96.     end;
  97.   end;
  98. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы