вот код
program dfbfb;
var a, b, c, e, x, x1, x2, D: real;
begin
writeln ('Введите коэффициенты');
readln(a, b, c);
e:=0;
if a=0 then writeln ('ERROR!!!') else
begin
e:=a*x*x+b*x+c;
D:=b*b-4*a*c;
if D<0 then writeln ('Нет корней! ');
if D=0 then x1:= -b/2*a;
if D>0 then x1:= (-b+sqr(D))/2*a;
x2:= (-b-sqr(D))/2*a;
writeln ('X1=', x1);
writeln ('X2=', x2);
end;
end.
ввожу коэффициенты 2 -5 3
выводит ответ х1=6 х2=4
решил уравнение вручную - х1= 1,5 х2=1
Что неправильно в программе?
Другие языки программирования и технологии
Проблема с прогой на паскале.
Sqr заменить на Sqrt
Чёрно Белый
заменил. ответ почему-то такой же((
program dfbfb;
var a, b, c, e, x, x1, x2, D: real;
begin
writeln ('Введите коэффициенты');
readln(a, b, c);
e:=0;
if a=0 then writeln ('ERROR!!!') else
begin
e:=a*x*x+b*x+c; <-- От куда здесь взялось начальное значение x? Оно ни где не задаётся! Дальше даже и не смотрел.
var a, b, c, e, x, x1, x2, D: real;
begin
writeln ('Введите коэффициенты');
readln(a, b, c);
e:=0;
if a=0 then writeln ('ERROR!!!') else
begin
e:=a*x*x+b*x+c; <-- От куда здесь взялось начальное значение x? Оно ни где не задаётся! Дальше даже и не смотрел.
e:=a*x*x+b*x+c; Зачем?
-b/2*a; - а надо -b/(2*a); или -b/2/a, и дальше тоже
if D>0 then x1:= (-b+sqr(D))/2*a;
x2:= (-b-sqr(D))/2*a; x2 будет вычислено в любом случае, забыл begin .. end. Ну и sqr, и знаменатель.. .
Правильно:
D:=b*b-4*a*c;
if D<0 then writeln ('Нет действительных корней! ')
else if D=0 then begin
x1:= -b/(2*a);
writeln('X=',x1);
end
else begin x1:= (-b+sqrt(D))/(2*a);
x2:= (-b-sqrt(D))/(2*a);
writeln ('X1=', x1);
writeln ('X2=', x2);
end;
-b/2*a; - а надо -b/(2*a); или -b/2/a, и дальше тоже
if D>0 then x1:= (-b+sqr(D))/2*a;
x2:= (-b-sqr(D))/2*a; x2 будет вычислено в любом случае, забыл begin .. end. Ну и sqr, и знаменатель.. .
Правильно:
D:=b*b-4*a*c;
if D<0 then writeln ('Нет действительных корней! ')
else if D=0 then begin
x1:= -b/(2*a);
writeln('X=',x1);
end
else begin x1:= (-b+sqrt(D))/(2*a);
x2:= (-b-sqrt(D))/(2*a);
writeln ('X1=', x1);
writeln ('X2=', x2);
end;
Начни со своего мозга, не способного даже сдуть для анализа готовую программу.
Виктор Третьяков
Обычно такие ответы пишут люди, которые знают не на много большего задающего вопрос, а самомнение - больше некуда. Ну не умеет человек программировать, чего барзеть то, пед...рила ты недоделаная?
sqr - это возведение в квадрат, поставь sqrt (корень) .
А зачем тебе некое "e"? Оно все-равно не используется, да и подправить прогу надо, например при D=0 присвой x2 значение x1. Да и учесть надо, что корни могут из дискриминанта не выделятся.
А зачем тебе некое "e"? Оно все-равно не используется, да и подправить прогу надо, например при D=0 присвой x2 значение x1. Да и учесть надо, что корни могут из дискриминанта не выделятся.
Чёрно Белый
program dfbfb;
var a, b, c, e, x, x1, x2, D: real;
begin
writeln ('Ââåäèòå êîýôôèöèåíòû');
readln(a, b, c);
e:=0;
if a=0 then writeln ('ERROR!!!') else
begin
e:=a*x*x+b*x+c;
D:=b*b-4*a*c;
if D0 then x1:= (-b+sqrt(D))/2*a;
x2:= (-b-sqrt(D))/2*a;
writeln ('X1=', x1);
writeln ('X2=', x2);
end;
end.
вот. исправил, а корни все равно те же...
P.S. вы предлагаете вместо е ввести константу?
var a, b, c, e, x, x1, x2, D: real;
begin
writeln ('Ââåäèòå êîýôôèöèåíòû');
readln(a, b, c);
e:=0;
if a=0 then writeln ('ERROR!!!') else
begin
e:=a*x*x+b*x+c;
D:=b*b-4*a*c;
if D0 then x1:= (-b+sqrt(D))/2*a;
x2:= (-b-sqrt(D))/2*a;
writeln ('X1=', x1);
writeln ('X2=', x2);
end;
end.
вот. исправил, а корни все равно те же...
P.S. вы предлагаете вместо е ввести константу?
согласен с ra, помоему sqrt корень квадратный, а не sqr
1. Sqr замени на Sqrt
2. В месте, где проверяется условие "Положительности" Дискриминанта, действие нужно объединить в begin end; Это нужно для того, чтоб программа не искала x2 когда дискриминант неположителен.
3. Когда D < 0 напиши так: begin writeln('нет корней'); exit; end; Чтобы не выводил x1=0; x2=0; в конце.
4. В конце запиши writeln('x1=',x1); if D>0 then writeln('x2=',x2); Так он будет выводить 2 корня только тогда, когда у тебя их 2.
5. b*2 возьми в скобки
2. В месте, где проверяется условие "Положительности" Дискриминанта, действие нужно объединить в begin end; Это нужно для того, чтоб программа не искала x2 когда дискриминант неположителен.
3. Когда D < 0 напиши так: begin writeln('нет корней'); exit; end; Чтобы не выводил x1=0; x2=0; в конце.
4. В конце запиши writeln('x1=',x1); if D>0 then writeln('x2=',x2); Так он будет выводить 2 корня только тогда, когда у тебя их 2.
5. b*2 возьми в скобки
Чёрно Белый
thanks
Похожие вопросы
- СРОЧНО ! Напишите прогу на Паскале
- Помогите написать прогу на паскале
- напишите проги в ПАСКАЛЕ плиз!!!очень надо.
- нужна помощь с прогой на паскале. сортировка матрицы. в данной проге необходимо в начале вывести исходную матрицу в "кра
- СРОЧНО ПОМОГИТЕ!!! Напишите прогу на паскале
- помогите составить прогу в паскале
- КТО знает подскажите как прогу в паскале написать с применением аски кодов
- Как написать прогу на паскале или С, чтобы при запуске этой проги она удаляла файл, например С://123.txt
- помогите доработать маленькую прогу на паскале(см. внутри)
- Помогите написать прогу на Паскале, экзамен горит, очень нужно..