Ну думаю - напишу ка я решалку квадратных уровнений, штука полезная всетаки.
взялся писать. Все отлично шло, первая версия тупо щитала дискриминант и два корня. Ни проверки на дискриминант меньше, или равно нулю, ничего больше небыло.
Потом добавил проверку на дискриминант меньше нуля. Все ещ программа работала нормально.
Ну решил впихнуть запрос на выход (Y/N). Все работало.
НО! После добавления проверки на дискриминант равен нулю ( тогда вычисления идут по другой формуле), и вводом label'ов все перестало работать. проблемма собственно вот в чем:
Когда вычисления идут по стандартной форме, или вообще не идут по причине дискр. меньше нуля, то запрос работает хорошо, сбоев нет, по вводу "y" программа завершаеться. НО, если все идет по новой формуле - программа вообще ввода значения не производит. тоесть после вопроса "ВЫход (Y/N)" программа сразу начинает свое выполнение заного.
Program sqr_ur;
label 1,io;
var
y1: char;
a,b,c: integer;
d: real;
x,y: real;
begin
writeln('_______ _____ _ _ _____ ______ _____ ______');
writeln('|______ | | \___/ |_____] |_____/ | | | ____');
writeln('| |_____| _/ \_ | | \_ |_____| |_____|');
writeln('Добро пожаловать в программу решения квадратных уровнений!');
writeln('Для продолжения нажмите любую кнопку.');
readln;
while y1<>'y' do
begin
1:writeln('Введите а, b и с через пробел и нажмите кнопку Enter.');
read(a,b,c);
d:= (b*b)-(4*a*c);
if (d=0) then
begin
Writeln('Дискриминант равен нулю а значит вычисления пойдут по другой формуле.');
x:=((-1)*(b/2*a));
Writeln('X=', X:6:2);
goto io;
end;
if (d<0) then
begin
writeln('Дискриминант меньше нуля. Уровнение не имеет решений. Нажмите любую кнопку, чтобы начать сначала.');
readln;
readln;
goto 1;
end;
Writeln('Дискриминант равер', d:6:2,'Нажмите куда-нить, чтобы продолжить.');
readln;
x:= (b*(-1)+sqrt(d))/(a*2);
y:= (b*(-1)-sqrt(d))/(a*2);
Writeln('X1=', x:6:2);
writeln('X2=', y:6:2);
io:writeln('Уравнение решено! Выход? (Y/N)'); read (y1);
end;
end.
помогите кто-то разобраться... вроде правильно все. приму любую критику, т\к учусь только =)
П.С. все слова писал на русском, а кодировку винда не понимает паскалевскую. так что либо скопируйте текст в оболочку паскаль, либо вот вам исходник прикрепленный.
Поправил кодировку.