IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Вычисление дискриминанта
krofik
сообщение 5.11.2010 14:58
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +


эх я новичок и почти не чего не знаю, помогите плс. здесь логическая ошибка, но какая!?
program kvadratnoe;
var
a,b,c,x1,x2,d:real;
begin
     write('Введите первый коеффициент а: ');
           read(a);
     write('Введите второй коеффициент b: ');
           read(b);
     write('Введите свободеый член c: ');
           read(c);
     d:=sqr(a)-4*a*c;
     if d>0 then 
            begin
                 x1:=(-b+sqrt(d))/a;
                 x2:=(-b-sqrt(d))/a;
                 writeln('Дискриминант больше нуля');
                 writeln('x1= ',x1);
                 writeln('x2= ',x2);
            end
            else
            begin
                 if d=0 then 
                        begin
                             writeln('Дискриминант равен нулю');
                             x1:=(-b+sqrt(d))/2;
                             writeln('x= ',x1);
                        end     
                        else
                        begin
                             writeln('Дискриминант меньше нуля, уравнение корней не имеет.');
                        end;
            end;            
end.


Сообщение отредактировано: Lapp - 6.11.2010 12:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sum42
сообщение 5.11.2010 15:05
Сообщение #2


голодный(
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


поправил

program kvadratnoe;
var
a,b,c,x1,x2,d:real;
begin
     write('Введите первый коеффициент а: ');
           read(a);
     write('Введите второй коеффициент b: ');
           read(b);
     write('Введите свободеый член c: ');
           read(c);
     d:=b*b-4*a*c;
     if d>0 then 
            begin
                 x1:=(-b+sqrt(d))/2a;
                 x2:=(-b-sqrt(d))/2a;
                 writeln('Дискриминант больше нуля');
                 writeln('x1= ',x1);
                 writeln('x2= ',x2);
            end
            else
            begin
                 if d=0 then 
                        begin
                             writeln('Дискриминант равен нулю');
                             x1:=(-b)/2a;
                             writeln('x= ',x1);
                        end     
                        else
                        begin
                             writeln('Дискриминант меньше нуля, уравнение корней не имеет.');
                        end;
            end;            
end.
 

не так пишешь формулу дискриминанта, и корней квадратного уравнения
--------------------------------
да и задание не мешает писать)

Сообщение отредактировано: Sum42 - 5.11.2010 15:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 5.11.2010 15:14
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Sum42, только вместо 2a надо писать (2*a), а то компилятор не поймёт.
krofik, ты бы внимательно посмотрел, правильно ли переписал формулу из учебника.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sum42
сообщение 5.11.2010 15:47
Сообщение #4


голодный(
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата
Sum42, только вместо 2a надо писать (2*a), а то компилятор не поймёт.

да, конечно, извиняюсь smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 5.11.2010 16:13
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +



спасибо больше я бы сам не додумался в книгу за формулой заглянуть)
это у меня такая домашка по инфе перепала. так что ещё увидимся
всем спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 7.11.2010 20:10
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +



program kvadratnoe;
var
a,b,c,x1,x2,d:real;
begin
     write('Введите первый коеффициент а: ');
           read(a);
     write('Введите второй коеффициент b: ');
           read(b);
     write('Введите свободеый член c: ');
           read(c);
     d:=sqr(b)-4*a*c;
     if d>0 then 
            begin
                 x1:=(-b+sqrt(d))/2*a;
                 x2:=(-b-sqrt(d))/2*a;
                 writeln('Дискриминант больше нуля');
                 writeln('x1= ',x1);
                 writeln('x2= ',x2);
            end
            else
            begin
                 if d=0 then 
                        begin
                             writeln('Дискриминант равен нулю');
                             x1:=(-b)/2*a;
                             writeln('x= ',x1);
                        end     
                        else
                        begin
                             writeln('Дискриминант меньше нуля, уравнение корней не имеет.');
                        end;
            end;            
end.
 

вот так короче окончательный вариант.
одноклассники, можете списывать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 7.11.2010 20:40
Сообщение #7


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ну введи a=2, b=0, c=-2.



Сообщение отредактировано: TarasBer - 7.11.2010 20:41


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 8.11.2010 16:08
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +


Цитата(TarasBer @ 7.11.2010 19:40) *

Ну введи a=2, b=0, c=-2.

x1=4
х2=-4
а чо!? зачем?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Freedom
сообщение 8.11.2010 16:20
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


Цитата(krofik @ 8.11.2010 17:08) *

x1=4
х2=-4
а чо!? зачем?


ну так не правильно же, должно быть Х1=1 и Х2=-1. Ищите ошибку

Сообщение отредактировано: Freedom - 8.11.2010 16:20


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 8.11.2010 16:28
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +


Цитата(Freedom @ 8.11.2010 15:20) *

ну так не правильно же, должно быть Х1=1 и Х2=-1. Ищите ошибку

хз ща времени нет потом посмотрю, но как по и=мне то все верно, хотя... короче потом гляну.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 8.11.2010 20:11
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +


Цитата(TarasBer @ 7.11.2010 19:40) *

Ну введи a=2, b=0, c=-2.

все ошибка была найдена в строке x:=(-b+sqrt(d))/(2*a); не хватало вторых скобок для 2*а.
окончательный вариант ещё чуть более укороченный

program kvadratnoe;
var
a,b,c,x1,x2,d:real;
begin
     write('Введите первый коеффициент а: ');
           read(a);
     write('Введите второй коеффициент b: ');
           read(b);
     write('Введите свободеый член c: ');
           read(c);
     d:=sqr(b)-4*a*c;
     writeln('Дискриминант=',d);
     if d>0 then
            begin
                 x1:=(-b+sqrt(d))/(2*a);
                 x2:=(-b-sqrt(d))/(2*a);
                 writeln('Дискриминант больше нуля');
                 writeln('x1= ',x1);
                 writeln('x2= ',x2);
            end
            else
            begin
                 if d=0 then 
                        begin
                             writeln('Дискриминант равен нулю');
                             x1:=(-b)/2*a;
                             writeln('x= ',x1);
                        end     
                        else writeln('Дискриминант меньше нуля, уравнение корней не имеет.');
            end;            
end.


Сообщение отредактировано: krofik - 8.11.2010 20:12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Freedom
сообщение 8.11.2010 20:33
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


А если ввести a=2 b=4 c=2 тогда у вас ответ выходит х=-4, хотя должно быть х=-1. Нужно повнимательнее быть, ошибка у вас в моменте когда вы рассматриваете дискриминант=0


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krofik
сообщение 8.11.2010 20:47
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  -1  +


Цитата(Freedom @ 8.11.2010 19:33) *

А если ввести a=2 b=4 c=2 тогда у вас ответ выходит х=-4, хотя должно быть х=-1. Нужно повнимательнее быть, ошибка у вас в моменте когда вы рассматриваете дискриминант=0

хух сколько же можно делать в одной программе столько одинаковых ошибок. вот такперь так в строке x1:=(-b)/(2*a); на 2*а ставим скобки и все снова работает.
окончательно:

program kvadratnoe;
var
a,b,c,x1,x2,d:real;
begin
     write('Введите первый коеффициент а: ');
           read(a);
     write('Введите второй коеффициент b: ');
           read(b);
     write('Введите свободеый член c: ');
           read(c);
     d:=sqr(b)-4*a*c;
     writeln('Дискриминант=',d);
     if d>0 then
            begin
                 x1:=(-b+sqrt(d))/(2*a);
                 x2:=(-b-sqrt(d))/(2*a);
                 writeln('Дискриминант больше нуля');
                 writeln('x1= ',x1);
                 writeln('x2= ',x2);
            end
            else
            begin
                 if d=0 then 
                        begin
                             writeln('Дискриминант равен нулю');
                             x1:=(-b)/(2*a);
                             writeln('x= ',x1);
                        end     
                        else writeln('Дискриминант меньше нуля, уравнение корней не имеет.');
            end;            
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 20.07.2025 3:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"