помогите, пжл!в выводе выводится столько же коэффициентов, чему равна степень,а коэффициентов должно быть больше на одно число больше какисправить код

//функция, для сложения членов массива  
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 шт):

Автор решения: MBo

Итак, по порядку:

При задании степени многочлена 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++]; 
 } 

Как мне кажется - всё это относится к довольно-таки элементарной логике

→ Ссылка