помогите, пжл!в выводе выводится столько же коэффициентов, чему равна степень,а коэффициентов должно быть больше на одно число больше какисправить код
//функция, для сложения членов массива
void compliteArray(int*& s, int* p, int* q, int n, int m) {
int nn = 0;
int mm = 0;
int g = 0;
while (nn < n && mm < m) {
s[g++] = p[nn++] + q[mm++];
}
while (nn < n) {
s[g++] = p[nn++];
}
while (mm < m) {
s[g++] = q[mm++];
}
}
// сравнение длин массивов
int maxLength(int n, int m) {
if (n > m) {
return n;
}
else {
return m;
}
}
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
// вводим степени массива
int n;
cout << "Введите степень многочлена P(x) " << endl;
cin >> n;
// создание массива
int* p = NULL;
createArray(p, n);
randomIncArray(p, n);
cout <<"Полученный массив P в степени n " << endl;
printARRAY(p, n);
//степени второго массива
int m;
cout <<"Введите степень многочлена Q(x) " << endl;
cin >> m;
int* q = NULL;
createArray(q, m);
randomIncArray(q, m);
printARRAY(q, m);
int c = maxLength(n, m);
int* s = NULL;
createArray(s, c);
compliteArray(s, p, q, n, m);
cout << "Полученные коэффициенты: " << endl;
printARRAY(s, c);
system("pause");
}`
`#include <iostream>
#include <iomanip>
#include <locale.h>
#include <ctime>
using namespace std;
//создание массива
void createArray(int*& array, int n)
{
if (n > 0)
array = new int[n];
else
array = NULL;
}
// вывод массивов рандомом
void randomIncArray(int*& array, int n)
{
array[0] = rand() % 10;
for (int i = 1; i < n; i++)
array[i] = array[i - 1] + rand() % 10;
}
//функция , для вывода массива
void printARRAY(int*& a, int n) {
cout <<"Полученный массив: " << endl;
for (int i = 0; i < n; i++) {
cout << setw(6) <<a[i];
}
cout << endl;
}
Постановка задачи: Коэффициенты многочлена ?-ой степени ?? ? ? + ?(?−1)?^?−1 + ⋯ + ?1? + ?0 можно разместить в вещественном массиве размера n+1: ?0, ?1 … ??−1, ??. Даны два многочлена P(x) и Q(x) степеней m и n соответственно, заданные своими коэффициентами. Найти коэффициенты многочлена, равного сумме многочленов P(x) и Q(x). вопрос: программа работает, но в выводе выводится столько же коэффициентов, чему равна степень, а коэффициентов должно быть больше на одно число больше, где исправить код
Ответы (1 шт):
Итак, по порядку:
При задании степени многочлена n массив нужно создавать длиной n+1 - вы же знаете, что коэффициентов должно быть больше на одно число больше, почему тогда пишете
array = new int[n]; ?
Дальше - randomIncArray должна заполнять n+1 элементов
array[0] = rand() % 10;
for (int i = 1; i <= n; i++)
array[i] = array[i - 1] + rand() % 10;
Дальше - printARRAY должна выводить n+1 элементов
cout <<"Полученный массив: " << endl;
for (int i = 0; i <= n; i++) {
cout << setw(6) <<a[i];
Дальше compliteArray должна обрабатывать все элементы обоих массивов
while (nn <= n && mm <= m) {
s[g++] = p[nn++] + q[mm++];
}
while (nn <= n) {
s[g++] = p[nn++];
}
while (mm <= m) {
s[g++] = q[mm++];
}
Как мне кажется - всё это относится к довольно-таки элементарной логике