Форум программистов, компьютерный форум CyberForum.ru

Решение квадратного уравнения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 16:40     Решение квадратного уравнения #1
Всем доброго время суток. Написать программу для решения квадратного уравнения общего вида http://www.cyberforum.ru/cgi-bin/latex.cgi?a*{x}^{2}+ b*x + c = 0. Параметры a, b и c вводятся с клавиатуры. Использовать аналитические формулы для решения уравнения, при этом учесть различные варианты: например a = 0, отсутствие решений (комплексные решения). При http://www.cyberforum.ru/cgi-bin/latex.cgi?a \neq 0 Решения квадратного уравнения имеют следующий вид:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{1}=\frac{-b+\sqrt{{b}^{2}-4*a*c}}{2*a}
и
http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{2}=\frac{-b-\sqrt{{b}^{2}-4*a*c}}{2*a}
Не могу правильно записать условие когда http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{{b}^{2}-4*a*c} < 0
C++
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
#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
int main ()
{
    double  a, b, c;
    double x, x1, x2;
    setlocale( LC_ALL,"Russian" );
    cout<<"b = "; cin>>b;
    cout<<"c = "; cin>>c;
    cout<<"a = "; cin>>a;
    if (a =0) // контроль введенных данных
    
        cout<<"x = "<<(-(c/b))<<"\n";
    else
    { 
        if (b * b - 4 * a * c <  0 )
    cout<<"Решение не существует \n";
        else
        cout<<"x1 = "<<((-b + sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
        cout<<"x2 = "<<((-b - sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
    }
system("pause");
    return 0;
}
Подскажите пожалуйста в чем ошибка????Заранее огромное спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 16:40     Решение квадратного уравнения
Посмотрите здесь:

Решение квадратного уравнения C++
C++ Решение квадратного уравнения
C++ решение квадратного уравнения С++
C++ Решение квадратного уравнения
Решение квадратного уравнения C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gvardman
1 / 1 / 0
Регистрация: 09.09.2012
Сообщений: 38
21.10.2012, 16:42     Решение квадратного уравнения #2
В if стоит приравнивание вместо сравнения
-=ЮрА=-
Заблокирован
Автор FAQ
21.10.2012, 17:59     Решение квадратного уравнения #3
isaak, вот уже готовoе + как бонус решение с комплексными переменными (это когда D < 0)
решение квадратного уравнения С++

Добавлено через 2 минуты
Цитата Сообщение от isaak Посмотреть сообщение
if (b * b - 4 * a * c < *0 )
* * cout<<"Решение не существует \n";
- ещё как существует только комплексное...
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 18:40  [ТС]     Решение квадратного уравнения #4
-=ЮрА=- спасибо за решение, а как еще сделать, чтобы при a = 0 уравнение решалось,
по формуле x = -b/c, я добавил еще одно условие, но оно не работает:
C++
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
37
38
39
40
41
42
43
44
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    double a,b,c,D;
    do
    {
        cout<<"Решение уравнения: a*x^2 + b*x + c = 0\n";
        cout<<"a = ";cin>>a;
        cout<<"b = ";cin>>b;
        cout<<"c = ";cin>>c;
        D = pow(b,2) - 4*a*c;
        if(a = 0)
        {
            cout<<"x = "<<(-b/c)<<endl;
        }
        else
        {
        if(0 <= D)
        {
            cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
            if(0 < D)
                cout<<"x2 = "<<(-b + sqrt(D))/2*a<<endl;
        }
        else
        {
            cout<<"Уравнение имеет комплексные корни\n";
            //sqrt(D) = 0 + j*val
            //0 + j*val + re = re + j*val
            D = fabs(D);
            cout<<"x1 = "<<-b/2*a<<" - j*"<<sqrt(D)/2*a<<endl;
            cout<<"x2 = "<<-b/2*a<<" + j*"<<sqrt(D)/2*a<<endl;
        }
        cout<<"Press Y - for new input\n";
    }
    }
    while(toupper(getch()) == 'Y');
    system("pause");
    return 0;
}
Подскажите пожалуйста в чем ошибка???? Заранее огромное спасибо.
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 18:48  [ТС]     Решение квадратного уравнения #5
Переделал по другому, тоже не правильно
C++
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
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    double a,b,c,D;
    do
    {
        cout<<"Решение уравнения: a*x^2 + b*x + c = 0\n";
        cout<<"a = ";cin>>a;
        if(a = 0)
        {
            cout<<"b = ";cin>>b;
            cout<<"c = ";cin>>c;
            cout<<"x = "<<(-b/c)<<endl;
        }
        else
        {
        cout<<"b = ";cin>>b;
        cout<<"c = ";cin>>c;
        D = pow(b,2) - 4*a*c;
        
        
        if(0 <= D)
        {
            cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
            if(0 < D)
                cout<<"x2 = "<<(-b + sqrt(D))/2*a<<endl;
        }
        else
        {
            cout<<"Уравнение имеет комплексные корни\n";
            //sqrt(D) = 0 + j*val
            //0 + j*val + re = re + j*val
            D = fabs(D);
            cout<<"x1 = "<<-b/2*a<<" - j*"<<sqrt(D)/2*a<<endl;
            cout<<"x2 = "<<-b/2*a<<" + j*"<<sqrt(D)/2*a<<endl;
        }
        cout<<"Press Y - for new input\n";
    }
    }
    while(toupper(getch()) == 'Y');
    system("pause");
    return 0;
}
Подскажите пожалуйста в чем ошибка???? Заранее огромное спасибо.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 18:48     Решение квадратного уравнения #6
Цитата Сообщение от isaak Посмотреть сообщение
if(a = 0)
здесь ошибка. это присваивание
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
21.10.2012, 18:49     Решение квадратного уравнения #7
у вас
Цитата Сообщение от isaak Посмотреть сообщение
if(a = 0)
а должно быть
C++
1
if (a == 0)
нужно писать два ровно
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 19:06  [ТС]     Решение квадратного уравнения #8
Вот I вариант:
C++
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
37
38
39
40
41
42
43
44
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    double a,b,c,D;
    do
    {
        cout<<"Решение уравнения: a*x^2 + b*x + c = 0\n";
        cout<<"a = ";cin>>a;
        cout<<"b = ";cin>>b;
        cout<<"c = ";cin>>c;
        D = pow(b,2) - 4*a*c;
        if(a == 0)
        {
        cout<<"x = "<<(-b/c)<<endl;
        }
        else
        {
        if(0 <= D)
        {
            cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
            if(0 < D)
                cout<<"x2 = "<<(-b + sqrt(D))/2*a<<endl;
        }
        else
        {
            cout<<"Уравнение имеет комплексные корни\n";
            //sqrt(D) = 0 + j*val
            //0 + j*val + re = re + j*val
            D = fabs(D);
            cout<<"x1 = "<<-b/2*a<<" - j*"<<sqrt(D)/2*a<<endl;
            cout<<"x2 = "<<-b/2*a<<" + j*"<<sqrt(D)/2*a<<endl;
        }
        cout<<"Press Y - for new input\n";
    }
    }
    while(toupper(getch()) == 'Y');
    system("pause");
    return 0;
}
и II вариант:
C++
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
37
38
39
40
41
42
43
44
45
46
47
48
49
/*Решение квадратного уравнения*/
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale( LC_ALL,"Russian" );
    double a,b,c,D;
    do
    {
        cout<<"Решение уравнения: a*x^2 + b*x + c = 0\n";
        cout<<"a = ";cin>>a;
        if(a == 0)
        {
        cout<<"b = ";cin>>b;
                                   cout<<"c = ";cin>>c;
        cout<<"x = "<<(-b/c)<<endl;
        }
        else
        {
        cout<<"b = ";cin>>b;
        cout<<"c = ";cin>>c;
        D = pow(b,2) - 4*a*c;
        
        
        if(0 <= D)
        {
            cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
            if(0 < D)
                cout<<"x2 = "<<(-b + sqrt(D))/2*a<<endl;
        }
        else
        {
            cout<<"Уравнение имеет комплексные корни\n";
            //sqrt(D) = 0 + j*val
            //0 + j*val + re = re + j*val
            D = fabs(D);
            cout<<"x1 = "<<-b/2*a<<" - j*"<<sqrt(D)/2*a<<endl;
            cout<<"x2 = "<<-b/2*a<<" + j*"<<sqrt(D)/2*a<<endl;
        }
        cout<<"Press Y - for new input\n";
    }
    }
    while(toupper(getch()) == 'Y');
    system("pause");
    return 0;
}
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
21.10.2012, 19:11     Решение квадратного уравнения #9
Цитата Сообщение от isaak Посмотреть сообщение
cout<<"x1 = "<<(-b - sqrt(D))/2*a<<endl;
Еще скобок не хватает. в знаменателе должно быть 2 * a
C++
1
cout<<"x1 = "<<(-b - sqrt(D))/(2*a)<<endl;
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 19:19  [ТС]     Решение квадратного уравнения #10
V.A.L.I.D посмотрите внимательно:
C++
1
2
cout<<"x1 = "<<((-b + sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
        cout<<"x2 = "<<((-b - sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
Там есть в знаменателе 2*a
-=ЮрА=-
Заблокирован
Автор FAQ
21.10.2012, 19:36     Решение квадратного уравнения #11
Цитата Сообщение от isaak Посмотреть сообщение
cout<<"x = "<<(-b/c)<<endl;
правильно будет x = -c/b
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
21.10.2012, 21:38  [ТС]     Решение квадратного уравнения #12
-=ЮрА=- спасибо, на такой мелочи я запоролся, в моем первом посте это условие было правильно, но остальная часть программы не правильно, сейчас с точностью, до наоборот.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 09:23     Решение квадратного уравнения
Еще ссылки по теме:

Решение квадратного уравнения C++
C++ Решение квадратного уравнения
Решение квадратного уравнения C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
22.10.2012, 09:23     Решение квадратного уравнения #13
Цитата Сообщение от isaak Посмотреть сообщение
else
* * {
* * * * if (b * b - 4 * a * c < *0 )
* * cout<<"Решение не существует \n";
* * * * else
{//ты их пропустил
* * * * cout<<"x1 = "<<((-b + sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
* * * * cout<<"x2 = "<<((-b - sqrt(b*b - 4 * a * c))/(2*a))<<"\n";
}//ты их пропустил
* * }
+ введи обработку когда b*b - 4 * a * c == 0 (это ещё 1 -но условие)
Yandex
Объявления
22.10.2012, 09:23     Решение квадратного уравнения
Ответ Создать тему
Опции темы

Текущее время: 04:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru