Программа перестает работать при наличии меню - Pascal ABC

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

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

Без меню все работает. Сделал в меню, включаю программу решения биквадратных уравнений под номером 1, ввожу нужные данные, потом просто все стирается и возвращается в меню не выводя результата. В чем может быть проблема? Заранее большое спасибо.
Листинг программы
  1. Uses CRT;
  2. var
  3. a,s,r,b,c,h,x1,x2,x3,x4,x5,x6,d:real;
  4. q:integer;
  5. V:char;
  6. begin
  7. repeat
  8. clrscr;
  9. writeln('Введите номер фигуры');
  10. writeln('Программа решения биквадратных-1');
  11. writeln('Программа решения квадратных-2');
  12. writeln('круг-3');
  13. writeln('Выход-q');
  14. readln(V);
  15. case V of
  16. '1':begin//программа решает биквадратное уравнение вида a*x^4+b*x^2+c'
  17. writeln('программа решает биквадратное уравнение вида a*x^4+b*x^2+c');
  18. write('введите a= ');
  19. read(a);
  20. write('введите b= ');
  21. read(b);
  22. write('введите c= ');
  23. read(c);
  24. d:=b*b-4*a*c;
  25. if d<0 then writeln('уравение не имеет решений') else
  26. begin
  27. x1:=(-b+sqrt(d))/(2*a);
  28. x2:=(-b-sqrt(d))/(2*a);
  29. if (x1<0) and (x2<0) then writeln('уравение не имеет решений') else
  30. begin
  31. if x1>=0 then
  32. begin
  33. x3:=sqrt(x1);
  34. x4:= -sqrt(x1);
  35. write('ответ: ',x3,';',x4,';');
  36. end;
  37. if x2>=0 then
  38. begin
  39. x5:=sqrt(x2);
  40. x6:= -sqrt(x2);
  41. writeln(x5,' ;',x6,'.');
  42. end;
  43. end;
  44. end;
  45. end;
  46. '2':begin//программа решения квадратных уравнений
  47. clrscr;
  48. write('Wwedite A: ');
  49. readln(a);
  50. write('Wwedite B: ');
  51. readln(b);
  52. write('Wwedite C: ');
  53. readln(c);
  54. {Вычисляем дискриминант}
  55. d:= b*b - 4*a*c;
  56. {Если дискриминант больше 0, то вычисляем корни и выводим на экран}
  57. if d > 0 then
  58. begin
  59. x1:= (b - sqrt(d))/(2*a);
  60. x2:= (-b - sqrt(d))/(2*a);
  61. writeln('x1 = ',x1:0:4);
  62. writeln('x2 = ',x2:0:4);
  63. end;
  64. {Если дискриминант равен 0, то вычисляем один корень и выводим на экран}
  65. if d = 0 then
  66. begin
  67. x1:= -(b/(2*a));
  68. writeln('корень = ',x1:0:4);
  69. end;
  70. {Если дискриминант меньше 0, то выводим сообщение}
  71. if d < 0 then
  72. begin
  73. writeln('Korney net');
  74. end;
  75. readln;
  76. end;
  77. '3':begin
  78. end;
  79. end;
  80. until V='q';
  81. writeln('Программа завершена.Для выхода нажмите любую клавишу');
  82. readln;
  83. end.

Решение задачи: «Программа перестает работать при наличии меню»

textual
Листинг программы
  1. program test;
  2.  
  3. uses
  4.   CRT;
  5.  
  6. var
  7.   a, s, r, b, c, h, x1, x2, x3, x4, x5, x6, d: real;
  8.   q: integer;
  9.   V: char;
  10. begin
  11.   repeat
  12.     clrscr;
  13.     writeln('Введите номер фигуры');
  14.     writeln('Программа решения биквадратных-1');
  15.     writeln('Программа решения квадратных-2');
  16.     writeln('круг-3');
  17.     writeln('Выход-q');
  18.     readln(V);
  19.     case V of
  20.       '1':
  21.       begin//программа решает биквадратное уравнение вида a*x^4+b*x^2+c'
  22.         writeln('программа решает биквадратное уравнение вида a*x^4+b*x^2+c');
  23.         Write('введите a= ');
  24.         Readln(a);
  25.         Write('введите b= ');
  26.         Readln(b);
  27.         Write('введите c= ');
  28.         Readln(c);
  29.         d := b * b - 4 * a * c;
  30.         if d < 0 then
  31.           writeln('уравение не имеет решений')
  32.         else
  33.         begin
  34.           x1 := (-b + sqrt(d)) / (2 * a);
  35.           x2 := (-b - sqrt(d)) / (2 * a);
  36.           if (x1 < 0) and (x2 < 0) then
  37.             writeln('уравение не имеет решений')
  38.           else
  39.           begin
  40.             if x1 >= 0 then
  41.             begin
  42.               x3 := sqrt(x1);
  43.               x4 := -sqrt(x1);
  44.               Write('ответ: ', x3, ';', x4, ';');
  45.             end;
  46.             if x2 >= 0 then
  47.             begin
  48.               x5 := sqrt(x2);
  49.               x6 := -sqrt(x2);
  50.               writeln(x5, ' ;', x6, '.');
  51.             end;
  52.           end;
  53.         end;
  54.         writeln('Press ENTER to continue...');
  55.         readln;
  56.       end;
  57.       '2':
  58.       begin//программа решения квадратных уравнений
  59.         clrscr;
  60.         Write('Wwedite A: ');
  61.         readln(a);
  62.         Write('Wwedite B: ');
  63.         readln(b);
  64.         Write('Wwedite C: ');
  65.         readln(c);
  66.         {Вычисляем дискриминант}
  67.         d := b * b - 4 * a * c;
  68.         {Если дискриминант больше 0, то вычисляем корни и выводим на экран}
  69.         if d > 0 then
  70.         begin
  71.           x1 := (b - sqrt(d)) / (2 * a);
  72.           x2 := (-b - sqrt(d)) / (2 * a);
  73.           writeln('x1 = ', x1: 0: 4);
  74.           writeln('x2 = ', x2: 0: 4);
  75.         end;
  76.         {Если дискриминант равен 0, то вычисляем один корень и выводим на экран}
  77.         if d = 0 then
  78.         begin
  79.           x1 := -(b / (2 * a));
  80.           writeln('корень = ', x1: 0: 4);
  81.         end;
  82.         {Если дискриминант меньше 0, то выводим сообщение}
  83.         if d < 0 then
  84.         begin
  85.           writeln('Korney net');
  86.         end;
  87.         readln;
  88.       end;
  89.       '3':
  90.       begin//круг
  91.         writeln('Площадь круга');
  92.         writeln('радиус круга');
  93.         readln(r);
  94.         s := 3.14 * r * r;
  95.         writeln('Решение готово');
  96.         writeln('Площадь круга=', s);
  97.         writeln('Нажмите Enter для отчистки экрана.');
  98.         readln;
  99.       end;
  100.     end;
  101.   until V = 'q';
  102.   writeln('Программа завершена.Для выхода нажмите любую клавишу');
  103.   readln;
  104. end.

Объяснение кода листинга программы

  1. Переменные a, b, c, d, x1, x2, x3, x4, x5, x6 объявлены и инициализированы значениями 0.
  2. В блоке repeat-until программа предлагает пользователю ввести номер фигуры.
  3. В зависимости от введенного номера фигуры программа выполняет различные действия:
    • Если введено '1', программа решает биквадратное уравнение и выводит значения x1, x2, x3, x4, x5, x6.
    • Если введено '2', программа решает квадратное уравнение и выводит значения x1, x2, x3, x4, x5, x6.
    • Если введено '3', программа вычисляет площадь круга и выводит значение радиуса круга.
  4. Программа продолжает выполняться до тех пор, пока пользователь не введет 'q'.
  5. По окончании работы программы выводится сообщение о завершении и предлагается нажать любую клавишу для выхода.

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


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

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

12   голосов , оценка 4.167 из 5

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

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

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