Нужно посчитать значение многочлена. Полностью задание на картинке.
Я написала программу с использованием меню, но вычисление значения многочлена, записанного в виде очереди, не совсем понимаю как записать. Помогите, очень нужно!
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
| struct num
{
float c; /* Коэффициент */
int e; /* Степень */
};
int main(int argc, char *argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
queue <struct num> plnm1;
queue <struct num> plnm3;
num polinom;
num cplnm;
num polinom1;
num cplnm1;
float x=0;
/* Меню */
bool loop = true;
while(loop)
{
system("cls");
cout << "p(x)=C1*X^e1+C2*X^e2+...+Cn*X^en" <<endl;
cout << "e1>e2>...>en>=0" <<endl;
cout << "_____________________________" <<endl;
cout << "01: Задать полином " <<endl;
cout << "02: Удалить полином " <<endl;
cout << "03: Посчитать значение полинома " <<endl;
cout << "00: Выход" <<endl;
cout << endl;
char k;
cin >> k;
switch(k)
{
case '0': /* Выход из цикла "Меню" */
loop = false;
break;
case '1': {
system("cls");
if (plnm1.empty())
{
cout << "Задайте полином " << endl;
short n;
int t;
cout << "Введите количество элементов: ";
cin >> n;
while (n<1)
{
cout << "Количество элементов не может быть менее 1. Введите количество элементов: ";
cin >> n;
}
cout << "Введите коэффициент: ";
cin >> polinom.c;
while (polinom.c==0)
{
cout << "При коэффициенте х=0 многочлен не будет существовать. Введите коэффициент x: ";
cin >> polinom.c;
}
cout << "Введите степень: ";
cin >> polinom.e;
t = polinom.e;
plnm1.push(polinom);
n--;
while (n>0)
{
if(t==0)
{
cout << "Ввод не может быть продолжен, так как степень меньше 0 не может существовать. " << endl;
break;
}
cout << "Введите коэффициент: ";
cin >> polinom.c;
while (polinom.c==0)
{
cout << "При коэффициенте х=0 многочлен не будет существовать. Введите коэффициент x: ";
cin >> polinom.c;
}
cout << "Введите степень: ";
cin >> polinom.e;
while (polinom.e>=t || polinom.e<0)
{
cout << "Степень должна быть меньше предыдущей, но не меньше 0. Введите степень y: ";
cin >> polinom.e;
}
t = polinom.e;
plnm1.push(polinom);
n--;
}
cout << "Полином задан" << endl;
}
else
cout << "Полином уже задан" << endl;
/* Просмотр полинома */
if (!plnm1.empty())
do
{
plnm1.pop();
cout << polinom.c << " " << polinom.e << endl;
plnm1.push(polinom);
cplnm = plnm1.front();
} while (cplnm.e<polinom.e);
}
break;
case '2': {
system("cls");
plnm1.~queue();
cout << "Полином очищен" << endl;
}
break;
case '3': {
system("cls");
/* Просмотр полинома */
if (!plnm1.empty())
do
{
plnm1.pop();
cout << polinom.c << " " << polinom.e << endl;
plnm1.push(polinom);
cplnm = plnm1.front();
}
while (cplnm.e<polinom.e);
cout << endl;
cout << "x=";
cin >> x;
/*значение полинома*/
for (int i = polinom.e; i >= 0; i--)
{
plnm3 += plnm1 * pow(x,i);
}
cout << "\nЗначение полинома=" <<plnm3<< endl;
return 0;
}
}
}
} |
|