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

Найти корни уравнения ах2 +bx+c=0 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Deniza
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 5
10.09.2012, 19:13     Найти корни уравнения ах2 +bx+c=0 #1
Даны вещественные числа а, b, с (a не равно 0). Вы*яснить, имеет ли уравнение ах2 +bx+c = 0 веще*ственные корни.если такие корни имеются,то найти их,ну а если нет ответом должно служить сообщение,что вещественных корней нет
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2012, 19:13     Найти корни уравнения ах2 +bx+c=0
Посмотрите здесь:

Найти корни уравнения C++
C++ Найти корни квадратного уравнения
C++ Найти корни квадратного уравнения
Найти корни уравнения C++
C++ Найти корни квадратного уравнения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,118
10.09.2012, 19:46     Найти корни уравнения ах2 +bx+c=0 #2
Вот:

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
#include <iostream.h>
#include <math.h>
 
int main(int argc, char* argv[])
{
    double a,b,c,d,x1,x2;
    cout << "a=";
    cin >> a;
    cout << "b=";
    cin >> b;
    cout << "c=";
    cin >> c;
 
    d=b*b-4*a*c;
 
    if (d < 0)
        cout << "No real roots" << endl;
    else
        if (fabs(d) <= 1E-16)
        {
            x1=-b/(2*a);
            cout << "Single root=" << x1 << endl;
        }
        else
        {
            x1=(-b+sqrt(d))/(2*a);
            x2=(-b-sqrt(d))/(2*a);
            cout << "Two roots:" << endl;
            cout << "x1=" << x1 << endl;
            cout << "x2=" << x2 << endl;
        }
 
    return 0;
}
Ataman
 Аватар для Ataman
1 / 1 / 1
Регистрация: 27.10.2011
Сообщений: 33
10.09.2012, 19:59     Найти корни уравнения ах2 +bx+c=0 #3
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
#include <iostream>
#include <cmath>
using namespace std;
 
void SquareEquation(float *root, float a, float b, float c) {
    root[0]=((-b + sqrt(pow(b,2) - (4*a*c))) / (2*a));
    root[1]=((-b - sqrt(pow(b,2) - (4*a*c))) / (2*a));
}
 
void main() {
    float root[2], a, b, c;
 
    cout << "Enter a,b,c numbers for equation ax^2 + bx + c: ";
    cin >> a >> b >> c;
    while(a==0) {
        cout << "a - parameter cann't be equal to zero, please reenter number: ";
        cin >> a;
    }
 
    SquareEquation(root, a, b, c);
 
    bool real_root=false;
    if(root[0] - (int)root[0] == 0) {
        cout << "x=" << root[0] <<endl;
        real_root=true;
    }
    if(root[1] - (int)root[1] == 0) {
        cout << "x=" << root[1] <<endl;
        real_root=true;
    }
    if(!real_root) cout << "there is no Real roots in this equation" <<endl;
}
xumera
 Аватар для xumera
1 / 1 / 0
Регистрация: 05.07.2012
Сообщений: 81
10.09.2012, 20:17     Найти корни уравнения ах2 +bx+c=0 #4
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<iomanip>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int a(0),b(0),c(0);
    double d(0.0),x1(0.0),x2(0.0);
        cout<<endl
            <<"vedit chuslo a";
        cin>>a;
        cout<<endl
            <<"vedit chuslo b";
        cin>>b;
        cout<<endl
            <<"vedit chuslo c";
        cin>>c;
        d=b*b-4*a*c;
        cout<<endl<<"d= "<<d;
            if(d>0)
            {
                x1=-b+sqrt(d);
                x2=-b-sqrt(d);
                cout<<endl
                    <<"est 2 koren"<<endl
                    <<"x1= "<<x1<<endl
                    <<"x2= "<<x2<<endl;
            }
            if(d=0)
            {
                x1=-b/2*a;
                cout<<endl
                    <<"est 1 koren"
                    <<"x1=x2= "<<x1;
            }
            else
            {
                cout<<endl
                    <<"rivniania nemae rozviazkiv";
            }
                    
        return 0;
}
Neko101210
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 6
10.09.2012, 20:52     Найти корни уравнения ах2 +bx+c=0 #5
Столько разных решений
А у меня так получалось (но я совсем еще новичок)
C++ (Qt)
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 <math.h>
using namespace std;
 
main ()
{
 double a, b, c;
 cout<<"enter a number with the exception of 0\n a=";
 cin>>a;
 cout<<"enter a number\n b=";
 cin>>b;
 cout<<"enter a number\n c="; 
 cin>>c;
 double D=b*b-4*a*c;
  if (D>0){
    cout<<"x1="<<(-b+sqrt(b*b-4*a*c))/2*a<<endl;
    cout<<"x2="<<(-b-sqrt(b*b-4*a*c))/2*a<<endl;
  } else {
    if (D=0){
      cout<<"x="<<(-b+sqrt(b*b-4*a*c))/2*a<<endl;
    } else {
      cout<<"there are no real roots of the equation"<<endl;
      }
  }
return 0;
}
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,118
10.09.2012, 20:55     Найти корни уравнения ах2 +bx+c=0 #6
Для первого раза неплохо. Но зачем ты несколько раз перевычисляешь b2-4ac?
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
10.09.2012, 20:58     Найти корни уравнения ах2 +bx+c=0 #7
C++
1
if (D=0){
не проверка на равенство(==), а присваивание(=). Программа будет всегда присваивать D нуль и выполнять первый блок условного оператора if.
Neko101210
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 6
10.09.2012, 21:16     Найти корни уравнения ах2 +bx+c=0 #8
Catstail, спасибо. Поняла, что ступила))
не проверка на равенство(==), а присваивание(=). Программа будет всегда присваивать D нуль и выполнять первый блок условного оператора if.
тоже вроде ясно, только у меня про отсутствие корней тоже исправно пишет Но на будущее буду знать, спасибо
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 182
Записей в блоге: 1
10.09.2012, 22:03     Найти корни уравнения ах2 +bx+c=0 #9
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
50
51
52
#include<iostream>
#include<math.h>
#include<conio.h>
#include <cstdlib>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
     int p;
    cout<<"Нажмите для выхода ESC , для продолжения любую другую клавишу\n\n";
    p=getch();
    while(p!=27)
    {float a,b,c,x,D,x1,x2;
    cout<<"Представленно уравнение вида a*(x^2)+b*x+c=0\n";
    cout<<"Введите коэфициент\na(затем нажмите Enter),\nb(затем нажмите Enter),\nc(затем нажмите Enter).\n";
    cin>>a>>b>>c;
    D=(b*b)-(4*a*c);
    cout<<"\nИскомый элемент D=(b*b)-(4*a*c)\tD=("<<b<<'*'<<b<<")-(4*"<<a<<'*'<<c<<")\n\n";
    cout<<"D ="<<D<<"\n\n";
    if(D!=0)
    {
        if(D>0)
        {
           cout<<"x1=(-b+(\\/D``))/2*a*c\tx2=(-b-(\\/D``))/2*a*c\n\n";
           cout<<"x1=(-"<<b<<"+(\\/"<<D<<"``))/2*"<<a<<'*'<<c;
           x1=(-b+(sqrt(D)))/2*a*c;
           x2=(-b-(sqrt(D)))/2*a*c;
           cout<<"\tx1="<<x1<<"\n";
           cout<<"x2=(-"<<b<<"-(\\/"<<D<<"``))/2*"<<a<<'*'<<c;
           cout<<"\tx2="<<x2<<"\n\n";
           cout<<"корни квадратного уравнения x1="<<x1<<";x2="<<x2<<"\n\n";
        }
        else
        {
            cout<<D<<"<0\n";
            cout<<"Уравнение не имеет корней\n\n";
        }
 
    }
    else
    {
        x=(-b)/(2*a);
        cout<<" x=(-b)/(2*a)=\tx="<<(-b)<<"/(2*"<<a<<")= "<<x<<"\n\n";
        cout<<"Ответ корень x="<<x<<"\n\n";
    }
    cout<<"Нажмите для выхода ESC , для продолжения любую другую клавишу\n";
    
    p=getch();
    system("cls");
    cout<<"\1\tА ТЕПЕРЬ РАДИ ПРИКОЛА ВМЕСТО ЦИФР БУКВЫ \1\n\n";
    }
}
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,118
10.09.2012, 22:11     Найти корни уравнения ах2 +bx+c=0 #10
В одной книге по вычислительной математике я прочитал буквально следующее: "Навряд ли в мире найдется хотя бы две полностью корректных программы решения квадратных уравнений". Все, приведенные выше программы (и моя в т.ч.) - лишняя иллюстрация этой мысли... Ввод букв и нечисловых символов отсечь легко. А попробуйте решить, например, вот такое уравнение:

1020*x2+23x-1020

Что получится?
Neko101210
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 6
11.09.2012, 01:26     Найти корни уравнения ах2 +bx+c=0 #11
Получается, для уравнения со степенью нужна отдельная программа. А как сделать, чтобы считывалось и вычислялось любое выражение? На форуме нашла про рекурсивный спуск, его можно применить в этом случае?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 13:34     Найти корни уравнения ах2 +bx+c=0
Еще ссылки по теме:

Найти корни квадратного уравнения C++
C++ Найти корни кубического уравнения
C++ Найти корни квадратного уравнения

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21486 / 10239 / 1668
Регистрация: 12.02.2012
Сообщений: 17,118
11.09.2012, 13:34     Найти корни уравнения ах2 +bx+c=0 #12
Цитата Сообщение от Neko101210 Посмотреть сообщение
Получается, для уравнения со степенью нужна отдельная программа
- просто нужно понимать, что вычисление с плавающей точкой таит сюрпризы.

Вычислять произвольные выражения можно по-разному. В т.ч. и методом рекурсивного спуска.
Yandex
Объявления
11.09.2012, 13:34     Найти корни уравнения ах2 +bx+c=0
Ответ Создать тему
Опции темы

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