Я только учусь на Паскале и хочу создать программу для решения биквадратного уравнения(ax^4+bx^2+c=0). Все получается, но проблемма с дискриминантом. Я не знаю как туда вставить If...then...else
volvo
10.09.2005 1: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<0thenbegin
f:=false;
writeln('„Дискриминант меньше 0');
end;
if d=0thenbegin
f:=true;
y1:=-b/(2*a);y2:=y1;
endelseif d>0thenbegin
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 thenbeginif y1>=0thenbegin
writeln ('x1= ',sqrt(y1):10:5,' x2=',-sqrt(y1):10:5);endelse writeln('Нет решений х1 и х2!');
if y2>=0thenbegin
y2:=sqrt(y2);
writeln('x3= ',y2:10:5,' x4= ',-y2:10:5);endelse writeln('Нет решений х3 и х4!'); end;
ifnot f then
writeln('„ Данное биквадратное уравнение не имеет решения !!');
end.
Составила программу с процедурой, но она не вычисляет корни, не могу понять почему. Может кто-нибудь найдет ошибку?
volvo
12.02.2006 20:47
Ты не возвращаешь результат из процедуры... Вот так попробуй:
procedure uravn(Var y1, y2: real; var f: boolean);
Анастасия
13.02.2006 21:05
Цитата(volvo @ 12.02.2006 15:47)
Ты не возвращаешь результат из процедуры... Вот так попробуй:
procedure uravn(Var y1, y2: real; var f: boolean);
Спасибо, всё получилось.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.