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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.65
I love myguitar
4 / 4 / 1
Регистрация: 23.10.2012
Сообщений: 233
11.09.2013, 17:24     Нахождение корней квадратного и линейного уравнений #1
Написать перегруженные шаблоны функций для нахождения корней линейного (а*х + b =0) и квадратного (a*x^2 + b*x +c=0) уравнений. Замечание в функции передаются коэффициенты уравнений.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
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);
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
11.09.2013, 18:31     Нахождение корней квадратного и линейного уравнений #3
Я бы еще в начало функции f2 добавил
C++
1
2
3
4
5
if(a==0)
{
    f1(b,c,x1,res);
    x1=x2;return;
}
I love myguitar
4 / 4 / 1
Регистрация: 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);
}
Я наверное что то не догоняю по мат. части и по языку точно , но при чём тут проверки и булевые флаги если в задаче сказано найти корни линейного и квадратного уравнений, а еще не понятней - " Замечание: в функции передаются коэффициенты уравнений " - в какой функции главной или в тех которые перегружаются ?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
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";
}
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
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 минуты
т.е. если уравнение имеет решения, то можно вывести на экран его корни или еще что-либо хорошее сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2014, 17:23     Нахождение корней квадратного и линейного уравнений
Еще ссылки по теме:

C++ Количество корней квадратного уравнения
Вычисление корней квадратного уравнения C++
C++ Нахождение корней квадратного уравнения через дискриминант

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

Или воспользуйтесь поиском по форуму:
krigan
 Аватар для krigan
1 / 1 / 0
Регистрация: 31.10.2012
Сообщений: 92
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;
    }
    
}
Yandex
Объявления
30.08.2014, 17:23     Нахождение корней квадратного и линейного уравнений
Ответ Создать тему
Опции темы

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