Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
2 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 43
1

Написать программу решения квадратного уравнения

14.11.2013, 21:27. Показов 10740. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
решить квадратное уравнение, учесть возможные варианты равенства коэффициентов a,b,c.

проходит только первое условие((( можете исправить?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var
d,a,b,c:integer;
x,x1,x2:real;
begin
readln(a);
readln(b);
readln(c);
if a=0 then begin
x:=c/b;
writeln(x);
readln;
end;
if (a=0) and (b=0) then  begin
x:=c;
writeln(x);
readln;
end ;
if (a=0) and (b=0) and (c=0) then  begin
x:=0;
writeln(x);
readln;
end;
if (a<>0) and (b<>0) and (c<>0) then begin
d:=b*b-4*a*c;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln(x1,x2);
readln;
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2013, 21:27
Ответы с готовыми решениями:

Написать программу для решения квадратного уравнения
1) Написать программу вычисляющую площадь треугольника по формуле Герона. 2) Написать программу...

Составить программу решения квадратного уравнения
Составить программу решения квадратного уравнения ax 2+bx+c=0.

Написать программу для решения уравнения
написать программу для решения уравнения exp(x)-x^2=0 методом Ньютона и Итераций,подсчитать число...

Составить подпрограмму решения квадратного уравнения
Помогите пожалуйста. Составить подпрограмму решения квадратного уравнения ах2 +bx +c = 0.

10
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
14.11.2013, 21:38 2
Ефросиньюшка, простите код [S]немного[\S] , попахивает глупостью.
0
Супер-модератор
6192 / 2938 / 1300
Регистрация: 04.03.2013
Сообщений: 5,780
Записей в блоге: 1
14.11.2013, 21:41 3
Готовый и проверенный вариант
1
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
14.11.2013, 21:47 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
a,b,c,d,x1,x2:real;
begin
readln(a);
readln(b);
readln(c);
 
d:=(b*b)-4*a*c;
if d>0 then begin x1:= -1*b+sqrt(d)/2*a; x2:=-1*b-sqrt(d)/2*a; writeln(x1,x2); end;
if d=0 then begin x1:= -1*b+sqrt(d)/2*a; writeln(x1); end;
if d<0 then begin exit; end;
 
end.
 
//---и всё в общем то
Pascal
1
2
3
if (a=0) and (b=0) then  begin... //--вот если эта конструкция получается верной
// то это и не уравнение уже и тд, оно уравнение в том случае если эти коэффициенты
//равны хотя бы единице
1
2 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 43
15.11.2013, 20:00  [ТС] 5
Крюгер, в условии сказано, что нужно учесть варианты равенства нулю коэффициентов a, b, c. поэтому у меня решение такое на понятное, глупое и длинное. Так как вы сделали я тоже могу, вот не пойму зачем и как приравнивать коэффициенты нулю, приравняла как поняла. Может я на правильно поняла, поэтому не проходит...
0
Супер-модератор
6192 / 2938 / 1300
Регистрация: 04.03.2013
Сообщений: 5,780
Записей в блоге: 1
15.11.2013, 20:12 6
Ефросиньюшка, вам надо проверить только 2 условия: Первое: если a и b = 0, то есть нет неизвестных в уравнении, второе, что a = 0, то есть уравнение не квадратное и корень его x = -c/b.
0
2 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 43
15.11.2013, 20:12  [ТС] 7
Крюгер, и если прогнать программу как вы написали, то она не верно будет решать.
Цитата Сообщение от Крюгер Посмотреть сообщение
if d>0 then begin x1:= -1*b+sqrt(d)/2*a; x2:=-1*b-sqrt(d)/2*a; writeln(x1,x2); end;
if d=0 then begin x1:= -1*b+sqrt(d)/2*a; writeln(x1); end;
так нужно
Pascal
1
2
if d>0 then begin x1:= (-1*b+sqrt(d))/(2*a); x2:=(-1*b-sqrt(d))/(2*a); writeln(x1,x2); end;
if d=0 then begin x1:= (-1*b+sqrt(d))/(2*a); writeln(x1); end;
0
Супер-модератор
6192 / 2938 / 1300
Регистрация: 04.03.2013
Сообщений: 5,780
Записей в блоге: 1
15.11.2013, 20:15 8
В оставшихся случаях решение производится по стандартной схеме, через дискриминант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
if (a = 0) and (b = 0) then
begin
  {это не уравнение}
end else
    if (a = 0) then
    begin
      {уравнение линейное}
    end else
        begin
          {решаем через дискриминант}
        end;
0
2 / 0 / 0
Регистрация: 25.10.2013
Сообщений: 43
15.11.2013, 20:19  [ТС] 9
ildwine, хорошо два условия. я же что то неправильно делаю. вот эти два условия ниже, опять работает программа только если перовое число ноль. я как то не правильно код составила... где ошибка? можете ее исправить?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
a,b,c,d,x1,x2:real;
begin
readln(a);
readln(b);
readln(c);
if a=0 then begin
x1:=c/b;
writeln(x1);
readln;
end;
if (a=0) and (b=0) then  begin
x1:=c;
writeln(x1);
readln;
end
else
d:=(b*b)-4*a*c;
if d>0 then begin x1:= (-1*b+sqrt(d))/(2*a); x2:=(-1*b-sqrt(d))/(2*a); writeln(x1,x2); end;
if d=0 then begin x1:= (-1*b+sqrt(d))/(2*a); writeln(x1); end;
if d<0 then begin exit; end;
end.
0
Супер-модератор
6192 / 2938 / 1300
Регистрация: 04.03.2013
Сообщений: 5,780
Записей в блоге: 1
15.11.2013, 20:32 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Главная суть в том, что проверка следующего условия должна быть в пункте else предыдущего, у вас не работает, потому что условия независимы.

Добавлено через 28 секунд
Pascal
1
2
3
4
5
6
7
8
9
10
11
if (a = 0) and (b = 0) then
begin
  {это не уравнение}
end else
    if (a = 0) then
    begin
      {уравнение линейное}
    end else
        begin
          {решаем через дискриминант}
        end;
Добавлено через 1 минуту
Если первое не выполнилось, то только тогда проверяем второе, а если и второе не выполнилось, то только тогда приступаем к решению квадратного уравнения...

Добавлено через 10 минут
Вот если хотите полная программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var
  d, a, b, c : integer;
  x1, x2 : real;
begin
  write('введите коэффициенты: ');
  readln(a, b, c);
  if (a = 0) and (b = 0) then
  begin
    {это не уравнение}
    writeln('это не уравнение, неизвестных нет!')
  end else
      if (a = 0) then
      begin
        {уравнение линейное}
        x1 := -c / b;
        writeln('уравнение линейное. корень уравнения: ', x1:6:2)
      end else
          begin
            {решаем через дискриминант}
            d := sqr(b) - 4 * a * c;
            if d < 0 then writeln('вещественных корней нет')
            else
              if d = 0 then
              begin
                x1 := (-b) / (2 * a);
                writeln('1 корень (кратности 2): ', x1:6:2)
              end
              else
              begin
                x1 := (-b + sqrt(d)) / (2 * a);
                x2 := (-b - sqrt(d)) / (2 * a);
                writeln('2 корня: ', x1:6:2, x2:6:2)
              end
          end;
  readln
end.
1
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
16.11.2013, 15:44 11
Ефросиньюшка,

Не по теме:

не дописал скобок второпях, и что?

0
16.11.2013, 15:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2013, 15:44
Помогаю со студенческими работами здесь

Составить подпрограмму решения квадратного уравнения
Составить подпрограмму решения квадратного уравнения ах2 +bx +c = 0.

Составить подпрограмму решения квадратного уравнения ах2 +bx +c = 0
Составить подпрограмму решения квадратного уравнения ах2 +bx +c = 0.

Даны два вещественных числа A и B написать программу решения уравнения ax2=b
Ребят поогите! Дпны два вещественных числа A и B написать программу решения уровнения ax2=b . ...

Нужен код решения квадратного уравнения по теореме Виета
Пожалуйста дайте код решения квадратного уравнения по теореме Виета. Turbo Pascal. Спасибо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru