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

Решение квадратного уравнения через функцию

29.11.2017, 15:04. Показов 1259. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты. Возникла проблема с написанием кода для решения квадратного уравнения. Это курсач, поэтому тут присутствует всяческая защита от дурака. Вот сам код
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
#include <iostream>
#include <windows.h>
#include <math.h>
#include <iomanip>
#include <fstream>
#include <limits>
using namespace std;
    void metod_discriminanta(float A, float B, float C)//объявление функции
    {
        double x1, x2, x; double discriminant;
        int v;//переменная для диалога с пользователем
        if (A!=0)
        {
            discriminant=(pow(B, 2)-(4*A*C));
            x1=((-B)+sqrt(discriminant))/(2*A); x2=((-B)-sqrt(discriminant))/(2*A);
            if (discriminant<0) {
                cout<<"There are no real roots";
 
            }
            else cout.setf(ios::fixed);
            cout<<"\nx1 ="<<setw(4)<<setprecision(2)<<x1<<endl;//форматированный вывод результатов
            cout<<"\nx2 ="<<setw(4)<<setprecision(2)<<x2<<endl;//форматированный вывод результатов
        }
        else if ((A==0)&&(B==0))
            cout<<"Incorrect data entered\n";
        else {
            cout<<"This is a linear equation. Do you want to solve it? \n1 - Yes \n2 - No"<<endl;
                cin>>v;}
                while((v!=1)&&(v!=2))
                    {
                        cin.clear();
                        cin.ignore(numeric_limits<std::streamsize>::max(),'\n');
                        cout<<"ERROR, Enter number again"<<endl;
                        cin>>v;
                    }
                    if (v==1){
                        x=-(C/B);
                        cout<<"\nx ="<<setw(4)<<setprecision(2)<<x<<endl;
                    }
                    else cout<<"Equation was not entered"<<endl;
        ofstream file;
        file.open("result.txt");
        file<<"\nx1="<<x1<<"\nx2="<<x2;
        file.close();
    }
 
int main()
{
    double A1, B1, C1;
    cout<<"Insert the equation`s coefficients\n";
    cout<<"A = "; cin>>A1;
    cout<<"B = "; cin>>B1;
    cout<<"C = "; cin>>C1;
 
    metod_discriminanta(A1,B1,C1);//вызов функции
    system("pause");
 
    return 0;
 
}
Возникают такие проблемы:
1) Если вместо первого коэффициента ввести какую нибудь строку, то программа выдает сообщение о неправильности введенных данных, но также она выводит остальные коэффициенты с неопределенными значениями и сообщение ERROR, Enter number again. Также это сообщение выводится даже когда дискириминант положительный и программа считает корни правильно. Что необходимо поменять, чтобы данная ветвь программы работала корректно?
2) Если подобрать такие коэффициенты уравнения, что дискриминант будет отрицательным, то вместе с сообщением о том что нет корней выводятся x1 и x2 со значениями Nan. Можно ли как нибудь убрать вывод корней из функции?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2017, 15:04
Ответы с готовыми решениями:

Написать функцию, обеспечивающую решение квадратного уравнения C++
Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами функции должны быть...

Написать функцию, обеспечивающие решение квадратного уравнения.
Написать функцию, обеспечивающие решение квадратного уравнения. Параметрами функции должны быть...

Написать функцию, обеспечивающую решение квадратного уравнения
Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами функции должны быть...

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

2
7780 / 6550 / 2981
Регистрация: 14.04.2014
Сообщений: 28,608
29.11.2017, 15:17 2
Цитата Сообщение от Arius_1404 Посмотреть сообщение
Это курсач

Цитата Сообщение от Arius_1404 Посмотреть сообщение
Если вместо первого коэффициента ввести какую нибудь строку
Сразу проверку делай, до вызова функции.
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
29.11.2017, 15:17 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
 discriminant=(pow(B, 2)-(4*A*C));
            if (discriminant<0) {
                cout<<"There are no real roots";
 
            }
            else
{
            x1=((-B)-sqrt(discriminant))/(2*A); x2=((-B)-sqrt(discriminant))/(2*A);
            cout.setf(ios::fixed);
            cout<<"\nx1 ="<<setw(4)<<setprecision(2)<<x1<<endl;//форматированный вывод результатов
            cout<<"\nx2 ="<<setw(4)<<setprecision(2)<<x2<<endl;//форматированный вывод результатов
}
скобки поставь
0
29.11.2017, 15:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2017, 15:17
Помогаю со студенческими работами здесь

Решение квадратного уравнения
Почему не работает? #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &quot;math.h&quot; using...

Решение квадратного уравнения
Написать программу решение квадратного уравнения. Программа должно проверять правельность исходных...

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

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


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

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

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