Дан многочлен P(x) степени n и многочлен Q(x) степени m. Получить многочлен (P(x) * Q(x)) штрих C++
Ответы на вопрос
# include <iostream>
# include <time.h>
using namespace std;
int main() {
int n, m;
cout << "n = ";
cin >> n; //n и m - степени данных многочленов
cout << "m = ";
cin >> m;
float *a = new float [n + 1];
float *b = new float [m + 1];
float *c = new float [n + m + 1]; //n + m - степень нового многочлена
//заполняем массивы a и b
for (int i = 0; i < n + 1; i++) {
cin >> a[i];
}
cout << endl;
for (int i = 0; i < m + 1; i++) {
cin >> b[i];
}
cout << endl;
for (int k = 0; k < n + m + 1; k++){
float S = 0; //произведение коэф-в
for (int i = 0; i < n + 1; i++)
for (int j = 0; j < m + 1; j++)
if (i + j == k) S += a[i] * b[j];
c[k] = S;
}
//создание массива для коэф-в производной
float *d = new float[n + m + 1];
//заполнение массива d
srand((unsigned int)time(NULL));
for (int i = 0; i < n + m + 1; i++) //псевдослучайное число
d[i] = rand() % 15;
//изменение и вывод массива d
for (int k = 1; k < n + m + 1; k++) {
d[k - 1] = k * c[k];
cout << d[k - 1] << " ";
}
system("pause");
return 0;
}
Для реализации умножения двух многочленов в C++, можно создать функцию, которая принимает коэффициенты обоих многочленов и их степени, а затем возвращает коэффициенты результирующего многочлена.
Прежде всего, убедитесь, что у вас уже есть реализованы функции для сложения и умножения многочленов на константу. Если их нет, можно добавить их тоже. Затем вы можете использовать следующую функцию для получения многочлена (P(x) * Q(x)):
cpp#include <iostream>
#include <vector>
// Функция для сложения двух многочленов
std::vector<int> addPolynomials(const std::vector<int>& p, const std::vector<int>& q) {
int n = p.size();
int m = q.size();
int maxSize = std::max(n, m);
std::vector<int> result(maxSize);
for (int i = 0; i < n; ++i)
result[i] += p[i];
for (int i = 0; i < m; ++i)
result[i] += q[i];
return result;
}
// Функция для умножения многочлена на константу
std::vector<int> multiplyPolynomialByConstant(const std::vector<int>& p, int constant) {
int n = p.size();
std::vector<int> result(n);
for (int i = 0; i < n; ++i)
result[i] = p[i] * constant;
return result;
}
// Функция для умножения двух многочленов
std::vector<int> multiplyPolynomials(const std::vector<int>& p, const std::vector<int>& q) {
int n = p.size();
int m = q.size();
std::vector<int> result(n + m - 1, 0);
for (int i = 0; i < n; ++i) {
std::vector<int> term = multiplyPolynomialByConstant(q, p[i]);
for (int j = 0; j < m; ++j)
result[i + j] += term[j];
}
return result;
}
int main() {
// Пример использования функции умножения многочленов
std::vector<int> polynomialP = {1, 2, 3}; // P(x) = 1 + 2x + 3x^2
std::vector<int> polynomialQ = {4, 5}; // Q(x) = 4 + 5x
std::vector<int> result = multiplyPolynomials(polynomialP, polynomialQ);
// Вывод результата (должно получиться 4 + 13x + 22x^2 + 15x^3)
for (int i = 0; i < result.size(); ++i) {
if (i > 0)
std::cout << " + ";
std::cout << result[i] << "x^" << i;
}
return 0;
}
Обратите внимание, что в данной реализации мы предполагаем, что коэффициенты многочленов представлены в виде векторов, где каждый элемент вектора соответствует коэффициенту при соответствующей степени переменной x (начиная с нулевой степени). Например, многочлен P(x) = 1 + 2x + 3x^2 представляется вектором {1, 2, 3}.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
