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

Найти вещественные корни уравнения ax4+bx2+c=0 - C++

Восстановить пароль Регистрация
 
Павел I
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 7
19.01.2014, 15:05     Найти вещественные корни уравнения ax4+bx2+c=0 #1
Вот условие: Даны числа a, b, с (проверить, чтобы а≠0, иначе повторить ввод). Найти вещественные корни уравнения ax4+bx2+c=0. Если корней нет, дать сообщение об этом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>   //Для функций cin, cout
#include <math.h>       //Для функций sin, pow
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
 
 double a,b,c;
  cout<<"Input a=";
  cin>>a;
  if(a==0) cout<<"Nelzya";
  //здесь надо сделать повтор ввода а если условие выше сработало
  cout<<"Input b=";
  cin>>b;
  cout<<"Input c=";
  cin>>c;
  cout<<endl;
 
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
19.01.2014, 15:14     Найти вещественные корни уравнения ax4+bx2+c=0 #2
Павел 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
45
46
47
48
#include <iostream>
#include<cmath>
#include<Windows.h>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int A, B, C;
    float x1, x2, d;
    cout << "Введите параметры уравнения(a,b,c):" << endl;
    cin >> A >> B >> C;
    if (A == 0)
    {
        cout << "Ошибка. А должен быть не 0!!!" << endl;
        system("PAUSE");
 
        return 0;
    }
    d = pow((float)B, 2) - 4 * A*C;
    if (d < 0)
        cout << "Нет действительных корней!\n";
    else
    {
        cout<<endl;
        cout<<A<<"x^2 + "<<B<<"x + "<<C<<" = 0\n";
        cout<<endl;
        if (d == 0)
        {
            cout.setf(ios::fixed);
            cout.precision(3);
            x1 = -B / (2 * A);
            cout << "x = " << x1<<endl;
        }
        else
        {
            cout.setf(ios::fixed);
            cout.precision(3);
            x1 = (-B - sqrt(d)) / (2 * A);
            x2 = (-B + sqrt(d)) / (2 * A);
            cout << "x1 = " << x1 << endl;
            cout << "x2 = " << x2 << endl;
        }
    }
    system("PAUSE");
 
    return 0;
}
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
19.01.2014, 15:18     Найти вещественные корни уравнения ax4+bx2+c=0 #3
Цитата Сообщение от Павел I Посмотреть сообщение
проверить, чтобы а≠0, иначе повторить ввод
Лучше так сделать:
C++
1
2
3
4
5
6
do
{
    cout <<"A = ";
    cin >> a;
}
while (a==0);
Цитата Сообщение от Павел I Посмотреть сообщение
Найти вещественные корни уравнения ax4+bx2+c=0. Если корней нет, дать сообщение об этом.
Ну так в чем проблема?
Делайте замену:
http://www.cyberforum.ru/cgi-bin/latex.cgi?x^2 = t
Решаете кв. уравнение:
http://www.cyberforum.ru/cgi-bin/latex.cgi?at^2+bt+c = 0
Находите t
Затем возвращаетесь к замене и находите x.
Решите на листочке, потом программу проще будет написать

Добавлено через 4 минуты
cooller_94, так ведь уравнение биквадратное
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
19.01.2014, 15:43     Найти вещественные корни уравнения ax4+bx2+c=0 #4
Цитата Сообщение от MicM Посмотреть сообщение
так ведь уравнение биквадратное
Упс, не заметил.
Ну ничего, згодится под основу

Добавлено через 22 минуты
Павел 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include<cmath>
#include<Windows.h>
 
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int A, B, C;
    float x1, x2,x3,x4, d;
    cout << "Введите параметры уравнения(a,b,c):" << endl;
    cin >> A >> B >> C;
    if (A == 0)
    {
        cout << "Ошибка. А должен быть не 0!!!" << endl;
        system("PAUSE");
 
        return 0;
    }
    d = pow((float)B, 2) - 4 * A*C;
    if (d < 0)
        cout << "Нет действительных корней!\n";
    else
    {
        cout<<endl;
        cout<<A<<"x^2 + "<<B<<"x + "<<C<<" = 0\n";
        cout<<endl;
        x1 = (-B - sqrt(d)) / (2 * A);
        x2 = (-B + sqrt(d)) / (2 * A);
        if(x1>=0 && x2>=0)
        {
            cout.setf(ios::fixed);
            cout.precision(3);
            cout << "x1 = " << sqrt(x1) << endl;
            cout << "x2 = " << -sqrt(x1) << endl;
            cout << "x3 = " << sqrt(x2) << endl;
            cout << "x4 = " << -sqrt(x2) << endl;
        }
        else
        {
            if(x1>=0)
            {
                cout.setf(ios::fixed);
                cout.precision(3);
                cout << "x1 = " << sqrt(x1) << endl;
                cout << "x2 = " << -sqrt(x1) << endl;
            }
            if(x2>=0)
            {
                cout.setf(ios::fixed);
                cout.precision(3);
                cout << "x1 = " << sqrt(x2) << endl;
                cout << "x2 = " << -sqrt(x2) << endl;
            }
        }
 
    }
    system("PAUSE");
 
    return 0;
}
Павел I
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 7
19.01.2014, 19:00  [ТС]     Найти вещественные корни уравнения ax4+bx2+c=0 #5
Цитата Сообщение от cooller_94 Посмотреть сообщение
cout<<A<<"x^2 + "<<B<<"x + "<<C<<" = 0\n";
После этой строчки не работает
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
19.01.2014, 19:15     Найти вещественные корни уравнения ax4+bx2+c=0 #6
Цитата Сообщение от Павел I Посмотреть сообщение
Сообщение от cooller_94
cout<<A<<"x^2 + "<<B<<"x + "<<C<<" = 0\n";
После этой строчки не работает
Если после этой строчке ничего не высвечивается значит невозможно вычислить корни. Можете добавить сообщение об этом.
Для проверки
Кликните здесь для просмотра всего текста

Введите параметры уравнения(a,b,c): -2 10 -3
Результат:
x1 = 2.16
x2 = -2.16
x3 = 0.56
x4 = -0.56
Yandex
Объявления
19.01.2014, 19:15     Найти вещественные корни уравнения ax4+bx2+c=0
Ответ Создать тему
Опции темы

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