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

Сложение, вычитание, умножение полиномов - C++

Восстановить пароль Регистрация
 
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
08.12.2013, 01:11     Сложение, вычитание, умножение полиномов #1
Пожалуйста, объясните, как работает эта программа? Особенно вот этот кусочек:

C++
1
2
3
4
5
6
7
8
9
10
class polynomial {
public:
int *coeff, degree; /* variable declaration */
 
int get_data(); /*function declaration */
int display(int *coeff, int degree);
void addition(polynomial P1, polynomial P2);
void substraction(polynomial P1, polynomial P2);
void multiplication(polynomial P1, polynomial P2);
};

Сама программа:

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include<iostream>
#include<stdlib.h>
 
#define RESET_COLOR "\e[m"
#define GREEN  "\e[32m"
 
using namespace std;
 
class polynomial {
public:
    int *coeff, degree; /* variable declaration */
 
    int get_data(); /*function declaration */
    int display(int *coeff, int degree);
    void addition(polynomial P1, polynomial P2);
    void substraction(polynomial P1, polynomial P2);
    void multiplication(polynomial P1, polynomial P2);
};
 
int polynomial::display(int *coeff, int degree) {
    int i, j;
    for (i = degree; i >= 0; i--) {
        cout << coeff[i] << "x^" << i;
        if ((i - 1) != -1)
            cout << "+";
    }
    cout << "\n";
    return 0;
}
 
int polynomial::get_data() {
    int i;
    cout << "Enter Degree Of Polynomial:";
    cin >> degree;
    coeff = new int[degree + 1];
    for (i = degree; i >= 0; i--) {
        cout << "Enter coefficient of x^" << i << ":";
        cin >> coeff[i];
    }
 
    return 0;
}
 
void polynomial::addition(polynomial P1, polynomial P2) {
    int max, i;
    max = (P1.degree > P2.degree) ? P1.degree : P2.degree;
    int *add = new int[max + 1];
    if (P1.degree == P2.degree) {
        for (i = P1.degree; i >= 0; i--)
            add[i] = P1.coeff[i] + P2.coeff[i];
    }
 
    if (P1.degree > P2.degree) {
        for (i = P1.degree; i > P2.degree; i--)
            add[i] = P1.coeff[i];
        for (i = P2.degree; i >= 0; i--)
            add[i] = P1.coeff[i] + P2.coeff[i];
    }
 
    if (P1.degree < P2.degree) {
        for (i = P2.degree; i > P1.degree; i--)
            add[i] = P2.coeff[i];
        for (i = P1.degree; i >= 0; i--)
            add[i] = P1.coeff[i] + P2.coeff[i];
    }
    cout << "\nAddition:";
    display(add, max);
    cout << "\n";
}
 
void polynomial::substraction(polynomial P1, polynomial P2) {
    int max, i;
    max = (P1.degree > P2.degree) ? P1.degree : P2.degree;
    int *sub = new int[max + 1];
    if (P1.degree == P2.degree) {
        for (i = P1.degree; i >= 0; i--)
            sub[i] = P1.coeff[i] - P2.coeff[i];
    }
 
    if (P1.degree > P2.degree) {
        for (i = P1.degree; i > P2.degree; i--)
            sub[i] = P1.coeff[i];
        for (i = P2.degree; i >= 0; i--)
            sub[i] = P1.coeff[i] - P2.coeff[i];
    }
 
    if (P1.degree < P2.degree) {
        for (i = P2.degree; i > P1.degree; i--)
            sub[i] = -P2.coeff[i];
        for (i = P1.degree; i >= 0; i--)
            sub[i] = P1.coeff[i] - P2.coeff[i];
    }
    cout << "\nSubstraction:";
    display(sub, max);
    cout << "\n";
}
 
void polynomial::multiplication(polynomial P1, polynomial P2) {
    int i, j, max;
    max = P1.degree + P2.degree;
    int *mul = new int[max + 1];
 
    for (i = P1.degree; i >= 0; i--)
        for (j = P2.degree; j >= 0; j--)
            mul[i + j] += P1.coeff[i] * P2.coeff[j];
    cout << "\nMultiplication:";
    display(mul, max);
}
 
int main() {
    int choice;
    polynomial P1, P2, P3;
    cout << GREEN << "Instruction:- \nExample:-\nP(x)=5x^3+3x^1\nEnter the Polynomial like\nP(x)=5x^3+0x^2+3x^1+0x^0\n" << RESET_COLOR;
    cout << "Enter Polynomial1:-" << endl;
    P1.get_data();
    cout << "Enter Polynomial2:-" << endl;
    P2.get_data();
 
    while (1) {
        cout << "\n****** Menu Selection ******" << endl;
        cout << "1: Addition\n2: Substraction\n3: Multiplication\n0: Exit" << endl;
        cout << "Enter ypur choice:";
        cin >> choice;
        switch (choice) {
            case 1:
                cout << GREEN << "\n--------------- Addition ---------------\n";
                cout << "Polynomial1:";
                P1.display(P1.coeff, P1.degree);
                cout << "Polynomial2:";
                P2.display(P2.coeff, P2.degree);
                P3.addition(P1, P2);
                cout << "----------------------------------------\n" << RESET_COLOR;
                break;
            case 2:
 
                cout << GREEN << "\n------------- Substraction -------------\n";
                cout << "Polynomial1:";
                P1.display(P1.coeff, P1.degree);
                cout << "Polynomial2:";
                P2.display(P2.coeff, P2.degree);
                P3.substraction(P1, P2);
                cout << "----------------------------------------\n" << RESET_COLOR;
                break;
            case 3:
                cout << GREEN << "\n----------- Multiplication -------------\n";
                cout << "Polynomial1:";
                P1.display(P1.coeff, P1.degree);
                cout << "Polynomial2:";
                P2.display(P2.coeff, P2.degree);
                P3.multiplication(P1, P2);
                cout << "----------------------------------------\n" << RESET_COLOR;
                break;
            case 0:
                cout << "Good Bye...!!!" << endl;
                exit(0);
        }
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 01:11     Сложение, вычитание, умножение полиномов
Посмотрите здесь:

С клавиатуры вводится две матрицы вычислить: сложение, вычитание, умножение, транспонирование. C++
C++ Сложение, вычитание, умножение
Организовать ввод двух вещественных чисел и операции над ними: сложение, вычитание, умножение и деление C++
C++ Нужны советы как реализовать сложение, вычитание, умножение полиномов/многочленов и деление на число
Сложение и вычитание, умножение и деление, сравнение сумм C++
C++ Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание)
Операции над матрицами-сложение, вычитание, умножение на число C++
C++ Класс "Матрица": ввод/вывод, умножение, сложение/вычитание, транспонирование, сдвиг
Нестандартное сложение, вычитание, умножение и деление C++
C++ Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами
Сделать сложение, вычитание, умножение и деление длинных чисел C++
C++ Сложение / Вычитание / Умножение чисел записанных в виде массива char символов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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