Я только учусь на Паскале и хочу создать программу для решения биквадратного уравнения(ax^4+bx^2+c=0). Все получается, но проблемма с дискриминантом. Я не знаю как туда вставить If...then...else
volvo
9.09.2005 21:13
Цитата(Sp01nK @ 9.09.05 21:09)
Все получается, но проблемма с дискриминантом. Я не знаю как туда вставить If...then...else
Это ты о чем? Зачем в дискриминант вставлять If ... Then ... Else? Ты бы привел код, который ты написал, и показал бы, что ты имеешь в виду... Так быстрее будет.
program lll;{Найти корни биквадратного уравнения, используя подпрограмму квадратного уравнения.} uses crt; var a,b,c:real; y1,y2:real;f:boolean;
procedure uravn(y1,y2:real;var f:boolean); var d:real; begin d:=sqr(b)-(4*a*c); if d<0 then begin f:=false; writeln('„Дискриминант меньше 0'); end; if d=0 then begin f:=true; y1:=-b/(2*a);y2:=y1; end else if d>0 then begin f:=true; y1:=(-b+sqrt(d))/(2*a); y2:=(-b-sqrt(d))/(2*a); end; end;{Конец процедуры.}
begin clrscr; writeln(' Введите параметры a,b,c !');readln(a,b,c); uravn(y1,y2,f); if f then begin if y1>=0 then begin writeln ('x1= ',sqrt(y1):10:5,' x2=',-sqrt(y1):10:5);end else writeln('Нет решений х1 и х2!');
if y2>=0 then begin y2:=sqrt(y2); writeln('x3= ',y2:10:5,' x4= ',-y2:10:5);end else writeln('Нет решений х3 и х4!'); end;
if not f then writeln('„ Данное биквадратное уравнение не имеет решения !!'); end.
Составила программу с процедурой, но она не вычисляет корни, не могу понять почему. Может кто-нибудь найдет ошибку?
volvo
12.02.2006 16:47
Ты не возвращаешь результат из процедуры... Вот так попробуй:
procedure uravn(Var y1, y2: real; var f: boolean);
Анастасия
13.02.2006 17:05
Цитата(volvo @ 12.02.2006 15:47)
Ты не возвращаешь результат из процедуры... Вот так попробуй:
procedure uravn(Var y1, y2: real; var f: boolean);
Спасибо, всё получилось.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.