Программа перестает работать при наличии меню - Pascal ABC
Формулировка задачи:
Без меню все работает. Сделал в меню, включаю программу решения биквадратных уравнений под номером 1, ввожу нужные данные, потом просто все стирается и возвращается в меню не выводя результата. В чем может быть проблема? Заранее большое спасибо.
Решение задачи: «Программа перестает работать при наличии меню»
textual
Листинг программы
program test;
uses
CRT;
var
a, s, r, b, c, h, x1, x2, x3, x4, x5, x6, d: real;
q: integer;
V: char;
begin
repeat
clrscr;
writeln('Введите номер фигуры');
writeln('Программа решения биквадратных-1');
writeln('Программа решения квадратных-2');
writeln('круг-3');
writeln('Выход-q');
readln(V);
case V of
'1':
begin//программа решает биквадратное уравнение вида a*x^4+b*x^2+c'
writeln('программа решает биквадратное уравнение вида a*x^4+b*x^2+c');
Write('введите a= ');
Readln(a);
Write('введите b= ');
Readln(b);
Write('введите c= ');
Readln(c);
d := b * b - 4 * a * c;
if d < 0 then
writeln('уравение не имеет решений')
else
begin
x1 := (-b + sqrt(d)) / (2 * a);
x2 := (-b - sqrt(d)) / (2 * a);
if (x1 < 0) and (x2 < 0) then
writeln('уравение не имеет решений')
else
begin
if x1 >= 0 then
begin
x3 := sqrt(x1);
x4 := -sqrt(x1);
Write('ответ: ', x3, ';', x4, ';');
end;
if x2 >= 0 then
begin
x5 := sqrt(x2);
x6 := -sqrt(x2);
writeln(x5, ' ;', x6, '.');
end;
end;
end;
writeln('Press ENTER to continue...');
readln;
end;
'2':
begin//программа решения квадратных уравнений
clrscr;
Write('Wwedite A: ');
readln(a);
Write('Wwedite B: ');
readln(b);
Write('Wwedite C: ');
readln(c);
{Вычисляем дискриминант}
d := b * b - 4 * a * c;
{Если дискриминант больше 0, то вычисляем корни и выводим на экран}
if d > 0 then
begin
x1 := (b - sqrt(d)) / (2 * a);
x2 := (-b - sqrt(d)) / (2 * a);
writeln('x1 = ', x1: 0: 4);
writeln('x2 = ', x2: 0: 4);
end;
{Если дискриминант равен 0, то вычисляем один корень и выводим на экран}
if d = 0 then
begin
x1 := -(b / (2 * a));
writeln('корень = ', x1: 0: 4);
end;
{Если дискриминант меньше 0, то выводим сообщение}
if d < 0 then
begin
writeln('Korney net');
end;
readln;
end;
'3':
begin//круг
writeln('Площадь круга');
writeln('радиус круга');
readln(r);
s := 3.14 * r * r;
writeln('Решение готово');
writeln('Площадь круга=', s);
writeln('Нажмите Enter для отчистки экрана.');
readln;
end;
end;
until V = 'q';
writeln('Программа завершена.Для выхода нажмите любую клавишу');
readln;
end.
Объяснение кода листинга программы
- Переменные a, b, c, d, x1, x2, x3, x4, x5, x6 объявлены и инициализированы значениями 0.
- В блоке repeat-until программа предлагает пользователю ввести номер фигуры.
- В зависимости от введенного номера фигуры программа выполняет различные действия:
- Если введено '1', программа решает биквадратное уравнение и выводит значения x1, x2, x3, x4, x5, x6.
- Если введено '2', программа решает квадратное уравнение и выводит значения x1, x2, x3, x4, x5, x6.
- Если введено '3', программа вычисляет площадь круга и выводит значение радиуса круга.
- Программа продолжает выполняться до тех пор, пока пользователь не введет 'q'.
- По окончании работы программы выводится сообщение о завершении и предлагается нажать любую клавишу для выхода.