0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 6
1

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

19.01.2018, 22:55. Показов 1505. Ответов 12

Должен был получиться калькулятор квадратных уравнений. Дискриминант правильный, но при поиске иксов какая-то лажа.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
 
int main()
{
 
    setlocale(0, "");
    float k, b, c, d, y;
    y = 2;
    cout <<"Введите k" << endl;
    cin >> k;
    cout <<"Введите b" << endl;
    cin >> b;
    cout <<"Введите c" << endl;
    cin >> c;
    cout << pow(b, y) - 4*k*c << endl;
    cout << "x1 = " << (-b + sqrt(d)) / (2*k) << endl;
    cout << "x2 = " << (-b - sqrt(d)) / (2*k) << endl;
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2018, 22:55
Ответы с готовыми решениями:

Решение квадратного уравнения
Сделал программу для решения квадратного уравнения, вроде все правильно, а ответ выдает не верный,...

Решение квадратного уравнения
Всем доброго время суток. Написать программу для решения квадратного уравнения общего вида...

решение квадратного уравнения С++
Добрый день. Задача заключается в следующем: необходимо решить квадратное уравнение вида...

Решение квадратного уравнения
Здравствуйте. Тут такое дело, что дали написать программку с использованием классов решения...

12
Заклинатель змей
610 / 507 / 213
Регистрация: 30.04.2016
Сообщений: 2,413
20.01.2018, 00:08 2
Лучший ответ Сообщение было отмечено SamedMusaev как решение

Решение

SamedMusaev, пропущено присвоение результата вычисления дискриминанта переменной D
0
1 / 1 / 1
Регистрация: 30.05.2017
Сообщений: 63
20.01.2018, 11:31 3
Лучший ответ Сообщение было отмечено SamedMusaev как решение

Решение

C++
1
2
3
4
cout <<"Введите c" << endl;
cin >> c;
d = pow(b, y) - 4*k*c;
cout << "d = " << d << endl;
1
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
20.01.2018, 21:09 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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{    
    int n=1;
    double a, b, c; 
    while (n==1)
{
    cout <<"a="; cin >> a;
    cout <<"b="; cin >> b;
    cout <<"c="; cin >> c;  
    if (b*b-4*a*c<0) cout <<"x1 and x2 is absent"<< endl;
    if (b*b-4*a*c==0) cout <<"x1=x2="<< -b/ (2*a)<< endl;
    if (b*b-4*a*c>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;
    }    
    cout <<"Continue? (1 - YES) "; cin >>n;
}    
    system("pause");
    return 0;
}
1
Заклинатель змей
610 / 507 / 213
Регистрация: 30.04.2016
Сообщений: 2,413
20.01.2018, 21:44 5
Yetty,
x1 and x2 is absent
"Are absent" Btw, they are complex, not absent
1
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 6
21.01.2018, 10:48  [ТС] 6
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>
#include <math.h>
#include <cmath>
using namespace std;
 
int main()
{
 
    setlocale(0, "");
    
    double x;
    int b, c, d, x1, x2, sq, a;
    sq = 2;
    cout <<"Введите a" << endl;
    cin >> a;
    cout <<"Введите b" << endl;
    cin >> b;
    cout <<"Введите c" << endl;
    cin >> c;
    
    d == pow(b, sq) - (4*a*c);
    if (d < 0) {
    cout << "No roots!";
    }else if (d == 0){
    cout << "D = 0. One root. x = " << (-d)/(2*a) << endl;
    }else{
    cout << d << " > 0. Two roots." << endl;
    cout << (x1 == -b + sqrt(d)) / (2*a) << endl;
    cout << (x2 == -b - sqrt(d)) / (2*a) << endl;
    }
    
    system ("pause");
    return 0;
}
Я немного его доделал, но результат все равно выходит неправильный. В чем же баг?
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
21.01.2018, 10:52 7
строка 21
0
1 / 1 / 1
Регистрация: 19.01.2018
Сообщений: 2
21.01.2018, 12:40 8
В C++ == и = имеют разное значение.
== это сравнение
= это присвоение.
Так же ваша программа будет работать только с целыми корнями. т.е. если задать уравнение в котором будут дроби получится неверный результат. Стоит изменить с тип данных с int на double, но при этом стоит учитывать особенность сравнения double c нулём
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
21.01.2018, 15:27 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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{    
    int n=1;
    double a, b, c, D, eps=0.0000000001; 
    while (n==1)
{
    cout <<"a="; cin >> a;
    cout <<"b="; cin >> b;
    cout <<"c="; cin >> c;
    D=b*b-4*a*c;
    if (D<=-eps) cout <<"No roots"<< endl;
    if (D>-eps && D<eps) cout <<"x1=x2="<< -b/ (2*a)<< endl;
    if (D>=eps)
    {
    cout <<"x1="<< (-b + sqrt(D)) / (2*a) << endl;
    cout <<"x2="<< (-b - sqrt(D)) / (2*a) << endl;
    }    
    cout <<"Continue? (1 - YES) "; cin >>n;
}    
    system("pause");
    return 0;
}
1
Заклинатель змей
610 / 507 / 213
Регистрация: 30.04.2016
Сообщений: 2,413
21.01.2018, 20:14 10
Yetty, D надо сравнивать с машинным нулём, а не левым eps, вместо которого есть портабельный DBL_EPSILON, который используется при сравнении двух даблов на равенство
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
21.01.2018, 20:19 11
Цитата Сообщение от DobroAlex Посмотреть сообщение
D надо сравнивать с машинным нулём
вроде и так всё работало. DobroAlex, напишите свой вариант кода если не сложно
0
Заклинатель змей
610 / 507 / 213
Регистрация: 30.04.2016
Сообщений: 2,413
21.01.2018, 20:39 12
Yetty, оно сработало на вашей машине, собранное вашим компилятором при ваших настройках. Переменная eps должна хранить машинный ноль, вот оверинжиниринговое решение
C++
1
2
3
4
5
6
7
8
9
10
template  <class T> T machineZero(void) {
    T e0 = (T) 0.0F;
 
    for (T e1 = (T) 1.0F; e1 > (T) 0.0F; e1 /= (T) 2.0F) {
       e0 = e1;
   }
   return e0;
}
....
double mZero = machineZero<double>(); // то, что у вас double eps = 0....
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
21.01.2018, 21:08 13
DobroAlex, как это применить к данной задаче, можете полностью выложить программу для ТС с учётом
оверинжиниринговых решений ?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2018, 21:08
Помогаю со студенческими работами здесь

Решение квадратного уравнения
ввести с клавиатуры коэффициенты квадратного уравнения a,b,c.напечатать корни x1 и x2 или сообщение...

Решение квадратного уравнения
Нужно сделать программу для решения уровнения Оно имеет вид a*x^2+b*x+c&gt;0 ...

Решение квадратного уравнения
как можно решить следующее уравнение: x=(a+b)*(a+b)*(a+b)-7.4*a*a*b+4*a+6 при любых значениях а и...

Решение квадратного уравнения
Программа меняет корни Х1 и Х2 местами. вместо -1 2 выводит 2 -1 #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru