Подразделы

Другие разделы

Дата и время

21/11/2024 19:25:38

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

print2300. (тренировка) Умножение полиномов

print(тренировка) Умножение полиномов

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

A – многочлен степени pA;
B – многочлен степени pB;
С = A * B;
Напишите процедуру вычисляющую C;
Используйте следующий шаблон программы:
#include <iostream>

using namespace std;

void MultPoly(int *, int *, int, int, int *);
void printres(int *, int *, int, int, int *);

int main() {
   int pA, pB;
   int *A, *B, *C;
   cout << "Stepen pervogo polinoma = ";
   cin >> pA;
   cout << "Stepen vtorogo polinoma = ";
   cin >> pB;
   A = new int[pA+1];
   B = new int[pB+1];
   C = new int[pA+pB+1];
   int k;
   for (int i=0; i<=pA-1; i++) {
      cout << "koefficient pri x^" << pA-i << " polinoma A = ";
      cin >> k;
      A[i] = k;
   }
   cout << "Svobodnii chlen mnogochlena A = ";
   cin >> k;
   A[pA] = k;
   for (int i=0; i<=pB-1; i++) {
      cout << "koefficient pri x^" << pB-i << " polinoma B = ";
      cin >> k;
      B[i] = k;
   }
   cout << "Svobodnii chlen mnogochlena B = ";
   cin >> k;
   B[pB] = k;

   for (int i=0; i<=pA+pB; i++) {
      C[i] = 0;
   }
   MultPoly(A, B, pA, pB, C);
   system("cls");
   printres(A, B, pA, pB, C);
   return 0;
}


void MultPoly(int *A, int *B, int pA, int pB, int *C) {
// ЭТО ФУНКЦИЯ, КОТОРУЮ ВЫ ДОЛЖНЫ НАПИСАТЬ
// A и B - полиномы - сомножители
// pA и pB - их порядки
// С - полином-результат

}

void printres(int *A, int *B, int pA, int pB, int *C) {
   cout << "C = ";
   if (pA+pB > 1) {
      if (C[0]!=1) {
         cout << C[0] << "*x^";
      } else {
         cout << "x^";
      }
      cout << pA+pB;
      for (int i=1; i<=pA+pB-2; i++) {
         cout << " + ";
         if (C[i]!=1) {
            cout << C[i] << "*x^";
         } else {
            cout << "x^";
         }
         cout << pA+pB-i;
      }
      cout << " + " << C[pA+pB-1] << "*x" << " + " << C[pA+pB] << endl;
   }
   else{
      if(pA+pB==0)
         cout << C[0] << endl;
      if(pA+pB==1)
         cout << C[0]<<"*x" << "+" << C[1] << endl;
   }
} 
Ввод
Первые 2 числа – степени полиномов A и B, далее коэффициенты при степенях, начиная от старшего, заканчивая нулевой степенью (свободных член) полинома A, затем B.
Вывод
Функция вывода написана, вам нужно лишь реализовать умножение полиномов

Пример ввода

1 1 1 1 1 1

Пример вывода

C = x^2 + 2*x + 1
loading