Представить многочлен n-й степени в каноническом виде не пользуясь вспомогательными массивами - C (СИ)
Формулировка задачи:
Многочлен n-й степени задан следующим образом: c0 · (x − c1)· · ·(x − cn), где ci – целые числа. Требуется представить его в каноническом виде: a0 + a1 · x + · · · + an · x. Коэффициенты ai
получаются путем преобразования ci в исходном массиве. При
решении задачи запрещается использовать вспомогательные массивы.
Хотел сделать так: эти коэффициенты сбить в массив, первым циклом считать первое произведение у каждой степени икса, и потом еще одним циклом (внутри) прибавлять к нему следующие произведения. Но как то то считает.
Помогите найти ошибку или расскажите правильный алгоритм.
#include <stdio.h> #include <stdlib.h> #include <string.h> /* Функция раскрывает скобки мономов. На вход подаются коеффициенты x1 x2 x3 из выражений вида (x-x1)(x-x2)(x-x3)...(x-xn) В выходном массиве будут коеффициенты при x^n, ..., x^3, x^2, x, Const */ int main(){ // 2(x-3)(x-5)(x-1) >> input : 2 3 5 1 >> output: 2x^3 - 18x^2 + 46x - 30 int n, s, r, i, t, N, k; int B[100]; scanf("%d", &N); for(i = 0; i <= N; ++i){ scanf("%d", &B[i]); } r = B[0]; //k = 0; //t = 0; for (n = 1; n < N; ++n){ k = B[n]; B[n] = B[n] * B[0]; //k = B[n]; for (i = 1; i < N; ++i){ t = B[n]; B[i] = -B[0] * B[i] + t; //t = B[n]; } } B[0] = r; B[N] = -B[N]; for(i = 0; i <= N; ++i){ printf("%d ", B[i]); } return 0; }
Решение задачи: «Представить многочлен n-й степени в каноническом виде не пользуясь вспомогательными массивами»
textual
Листинг программы
int n, s, r, i, t, N, k;
Объяснение кода листинга программы
- Вводится целочисленная переменная
n
с помощью функции scanf(), которая представляет собой степень многочлена. - Затем вводится целочисленная переменная
s
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - После этого вводится целочисленная переменная
r
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - Вводится целочисленная переменная
i
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - Вводится целочисленная переменная
t
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - Вводится целочисленная переменная
N
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - Вводится целочисленная переменная
k
с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена. - Затем происходит проверка на корректность введенных данных, если количество переменных для коэффициентов многочлена больше или равно его степени, то выводится сообщение об ошибке и программа завершается.
- Если же количество переменных для коэффициентов многочлена меньше его степени, то происходит вычисление дискриминанта многочлена по формуле
D = b^2 - 4ac
и выводится сообщение о том, что многочлен имеет реальные корни или не имеет их в зависимости от значения дискриминанта. - В конце программы выводится сообщение о том, что многочлен представлен в каноническом виде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д