Помощь - Поиск - Пользователи - Календарь
Полная версия: Корни квадратного уравнения
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ToM SoIeR
Всем хай, помогите найти ошибку в проге для решения квадратных уравнений.


Program EX_3;
var
a,b,c:real;
x1,x2:real;
D:real;
Begin
Writeln ('Reshenie kvadratnogo uravnenie');
Writeln ('Vvedite A');
Readln (a);
Writeln ('Vvedite b');
Readln (b);
Writeln ('Vvedite c');
Readln ( c);
D:=(b*b)-4*(a*c);
if D>0 then
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
Writeln ('Pervyi kopenb', x1);
Writeln ('VtopoI kopenb', x2)
end.
If D=0 then
x1:=-b/2*a;
Writeln ('Odin kopenb' , x1);
end;
If D<0 then
Writeln (HET KOPNEU');
Readln
end.


blink.gif blink.gif blink.gif

В следующий раз пользуйся тегами
klem4
Program EX_3;
var
a,b,c:real;
x1,x2:real;
D:real;
Begin
Writeln ('Reshenie kvadratnogo uravnenie');
Writeln ('Vvedite A');
Readln (a);
Writeln ('Vvedite b');
Readln (b);
Writeln ('Vvedite c');
Readln ( c);
D:=(b*b)-4*(a*c);
if D>0 then begin
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
Writeln ('Pervyi kopenb', x1 :2:3);
Writeln ('VtopoI kopenb', x2 :2:3)
end
else
If D=0 then begin
x1:=-b/2*a;
Writeln ('Odin kopenb' , x1 :2:3);
end
else
Writeln ('HET KOPNEU');
Readln
end.



Ошибки были в синтаксисе .. но есть и логические, что будет если ввести a=0 ? ;)
Altair
 var
a,b,c, x1,x2, D :single;
Begin
writeln ('Reshenie kvadratnogo uravnenie');
write ('Vvedite A='); Readln ( a );
write ('Vvedite b'); Readln ( b );
write ('Vvedite c'); Readln ( c );
D:=sqr(b)-4*(a*c);
if D>0 then begin {BEGIN!}
x1:=(-b+sqrt(D))/(2*a);
x2:=(-b-sqrt(D))/(2*a);
Writeln ('Pervyi kopenb', x1);
Writeln ('VtopoI kopenb', x2)
end;
If D=0 then begin {begin}
x1:=-b/2*a;
Writeln ('Odin kopenb' , x1);
end;
If D<0 then writeln ('HET KOPNEU');
Readln
end.


Цитата
что будет если ввести a=0 ? ;)

Цитата
для решения квадратных уравнений.

;)
klem4
Цитата
для решения квадратных уравнений.


И что дальше ? А если я случайно введу 0 ? Защиту от дурака всеравно надо делать smile.gif)
ToM SoIeR
Спасибо. Т.к я только учусь, не могли бы вы мне помочь с учебником. Подкиньте ссылочек.
Сейчас у меня веб-версия В.В. Зелинского за 2000 г. Его легко найти в инете. Помогите найти лучше.. Т.к я работаю с Qbasic и в паскале полный 0 blink.gif
Altair
Цитата
Т.к я работаю с Qbasic и в паскале полный 0

А в бейсике что-то понимаешь ? Тогда не вижу проблемм ... синтаксис да и семантика похожи... (ИМХО).
Цитата
Подкиньте ссылочек.

http://pascal.dax.ru/?books
здесь есть все и даже больше.
ToM SoIeR
Аначинать с самоучителя Фаронова ?
volvo
Ребята, ну что же происходит blink.gif Кто же сравнивает НЕ целые числа с нулем? Мало обжигались на этом?

Я бы все-таки поменял структуру программы:

if D>0 then begin
{ действия по положительному D }
end
else
if D<0 then writeln ('HET KOPNEU')
else begin
{ действия по D = 0 }
end;
Altair
да если на то пошло, в данном случае, не важно будет там 0 или нет, просто 1 одинаковых корня получим.
klem4
Интересно, вот тест, до 16 знака выдает правильный результат ... а в каком случае может быть сбой ?

uses crt;
var
e : extended;
count : byte;

begin

clrscr;

e := 0.1;
count := 0;

while (count <= 16) do begin
writeln(e:1:17,' ',e<0,' ',e=0,' ',e>0);
e := e / 10;
inc(count)
end;
readln;
end.
Altair
ну обсуждали ведь это уже!!!
В прошлом году по аське ходила ведь прога, в которой после 6 итераций 0.6 - 0.1 получался НЕ ноль....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.