4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
1

Нахождение корней квадратного и линейного уравнений

11.09.2013, 17:24. Показов 18609. Ответов 6
Метки нет (Все метки)

Написать перегруженные шаблоны функций для нахождения корней линейного (а*х + b =0) и квадратного (a*x^2 + b*x +c=0) уравнений. Замечание в функции передаются коэффициенты уравнений.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2013, 17:24
Ответы с готовыми решениями:

Нахождение корней квадратного уравнения
Знаю, что на эту тему уже много было написано, но мне нужно точное решение задачи, поскольку...

Нахождение корней квадратного уравнения
Здравствуйте , показывает ошибку в этих строчках,ругается на функции sqrt и pow объясните почему...

Нахождение корней квадратного уравнения С++
Как найти корни квадратного уравнения С++?Задаются ведь значения x.y.z,а на выходе выводится...

Нахождение корней квадратного уравнения
Здравствуйте все кто читает эти строки! Большой привет вам из раздела Delphi! Моему другу...

6
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
11.09.2013, 18:27 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
template<typename T>
void f1(const T &a, const T &b, T &x, bool &res)
{
    if (a == 0)
    {
        res = false;
        return ;
    }
 
    res = true;
    x = -b / a;
}
 
template<typename T>
void f2(const T &a, const T &b, const T &c, T &x1, T &x2, bool &res)
{
    const T D = b*b - 4*a*c;
 
    if (D < 0)
    {
        res = false;    // нет корней
        return ;
    }
 
    res = true;
    x1 = (-b - sqrtf(D)) / (2*a);
    x2 = (-b + sqrtf(D)) / (2*a);
}
1
Модератор
Эксперт С++
12782 / 10237 / 6151
Регистрация: 18.12.2011
Сообщений: 27,417
11.09.2013, 18:31 3
Я бы еще в начало функции f2 добавил
C++
1
2
3
4
5
if(a==0)
{
    f1(b,c,x1,res);
    x1=x2;return;
}
0
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
11.09.2013, 21:53  [ТС] 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
template<typename T>
void f1(const T &a, const T &b, T &x, bool &res)
{
    if (a == 0)
    {
        res = false;
        return ;
    }
 
    res = true;
    x = -b / a;
}
 
template<typename T>
void f2(const T &a, const T &b, const T &c, T &x1, T &x2, bool &res)
{
    const T D = b*b - 4*a*c;
 
    if (D < 0)
    {
        res = false;    // нет корней
        return ;
    }
 
    res = true;
    x1 = (-b - sqrtf(D)) / (2*a);
    x2 = (-b + sqrtf(D)) / (2*a);
}
Я наверное что то не догоняю по мат. части и по языку точно , но при чём тут проверки и булевые флаги если в задаче сказано найти корни линейного и квадратного уравнений, а еще не понятней - " Замечание: в функции передаются коэффициенты уравнений " - в какой функции главной или в тех которые перегружаются ?
0
Модератор
Эксперт С++
12782 / 10237 / 6151
Регистрация: 18.12.2011
Сообщений: 27,417
11.09.2013, 22:03 5
Цитата Сообщение от I love myguitar Посмотреть сообщение
при чём тут проверки
А что должна возвращать функция при отсутствии корней?
Цитата Сообщение от I love myguitar Посмотреть сообщение
в какой функции главной
В какой еще главной функции?
C++
1
2
3
4
5
6
7
8
9
int main()
{
    double a=1.,b=2.,c=3.,x1,x2,res;
    f2(a,b,c,x1,x2,res);
    if(res)
          cout<<"x1="<<x1<<" x2="<<x2<<endl;
    else
         cout<<"net korney\n";
}
1
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
11.09.2013, 22:09 6
Цитата Сообщение от I love myguitar Посмотреть сообщение
но при чём тут проверки и булевые флаги
по этим флагам можно определить имеет ли уравнение решение или не имеет

вот небольшой пример

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    int a, b, c;
    int x1, x2;
    bool res;
 
    f2(a, b, c, x1, x2, res); // res передается по ссылке
 
    if (res == true)    // если уравнение имеет решения, ...
    {
 
    }
    else                // уравнение не имеет решений
    {
 
    }
Добавлено через 3 минуты
т.е. если уравнение имеет решения, то можно вывести на экран его корни или еще что-либо хорошее сделать.
0
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
30.08.2014, 17:23 7
Ещё вариант

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <math.h>
using namespace std;
/*Написать перегруженные шаблоны функций для нахождения корней линейного (a*x + b = 0) и 
квадратного (a*x2+b*x + c = 0) уравнений. Замечание: в функции передаются коэффициенты уравнений. */
 
double linur(double a, double b)
{
    return -b/a;
} 
 
template < int I > double X(double a, double b, double c) 
{ 
if(I==1) return (-b + sqrt(b*b-4*a*c))/2/a; 
else if(I==2) return (-b - sqrt(b*b-4*a*c))/2/a; 
else throw "РЕШЕНИЯ НЕТ!"; 
}
 
void main()
 
{
    system ("color 0a");
    setlocale(LC_CTYPE,"rus");
    int key, v;
    double a,b,c;
 
    cout << " 1. Написать перегруженные шаблоны функций для нахождения корней линейного\n ";
    cout << "(a*x + b = 0) и квадратного (a*x^2+b*x + c = 0) уравнений. Замечание:\n ";
    cout << "в функции передаются коэффициенты уравнений. " <<endl<<endl;
    cout << " 2. ВЫХОД." <<endl<<endl;
 
    cout << " Введите номер задания : ";
    cin >> key;
    cout << endl;
 
    switch(key)
    {
    
    case 1:
        cout << " Если уравнение линейное то введите 1, если квадратное то введите 2: ";
        cin >> v;
        if (v==1)
            { 
                cout << " Введите первый коэффициент :";
                cin >> a;
                cout << " Введите второй коэффициент :";
                cin >> b;
                cout << endl;
                cout << " Корень линейного уравнения будет равен :" << linur(a, b); 
                cout << endl;
            }
        else
            {
                cout << " Введите первый коэффициент :";
                cin >> a;
                cout << endl;
                cout << "Введите второй коэффициент :";
                cin >> b;
                cout << endl;
                cout << " Введите третий коэффициент :";
                cin >> c;
                cout << endl;
                double x1 = X< 1 >(a,b,c); 
                double x2 = X< 2 >(a,b,c);
                cout << " Первый корень линейного уравнения будет равен :" << x1 << endl;
                cout << " Второй корень линейного уравнения будет равен :" << x2 << endl;
                cout << endl;
            }
        
        break;
    case 2:
        break;
    }
    
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2014, 17:23
Помогаю со студенческими работами здесь

Нахождение корней квадратного уравнения (Pascal -> C++)
Помогите Перевести с Pascal на C++ Можно и картинкой Добавлено через 33 секунды Вот код: ...

Нахождение корней квадратного уравнения через дискриминант
Здравствуйте! Начинаю работать в C++ Builder 3.1 в DOSBOXe. Стоит задача реализовать программу...

Тема: Функции. Нахождение комплексных корней квадратного уравнения
Тема: Функции. Нахождение комплексных корней квадратного уравнения. Написать функцию, которая...

Нахождение корней нелинейных уравнений
Нахождение корней нелинейных уравнений методами хорд, комбинированным методом хорд и касательных,...


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

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

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