Программа перестает работать при наличии меню - Pascal ABC
Формулировка задачи:
Без меню все работает. Сделал в меню, включаю программу решения биквадратных уравнений под номером 1, ввожу нужные данные, потом просто все стирается и возвращается в меню не выводя результата. В чем может быть проблема? Заранее большое спасибо.
Листинг программы
- 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= ');
- read(a);
- write('введите b= ');
- read(b);
- write('введите c= ');
- read(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;
- 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
- end;
- end;
- until V='q';
- writeln('Программа завершена.Для выхода нажмите любую клавишу');
- readln;
- end.
Решение задачи: «Программа перестает работать при наличии меню»
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'.
- По окончании работы программы выводится сообщение о завершении и предлагается нажать любую клавишу для выхода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д