Представить многочлен 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;

Объяснение кода листинга программы

  1. Вводится целочисленная переменная n с помощью функции scanf(), которая представляет собой степень многочлена.
  2. Затем вводится целочисленная переменная s с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  3. После этого вводится целочисленная переменная r с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  4. Вводится целочисленная переменная i с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  5. Вводится целочисленная переменная t с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  6. Вводится целочисленная переменная N с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  7. Вводится целочисленная переменная k с помощью функции scanf(), которая представляет собой количество переменных, которые будут использоваться в качестве коэффициентов многочлена.
  8. Затем происходит проверка на корректность введенных данных, если количество переменных для коэффициентов многочлена больше или равно его степени, то выводится сообщение об ошибке и программа завершается.
  9. Если же количество переменных для коэффициентов многочлена меньше его степени, то происходит вычисление дискриминанта многочлена по формуле D = b^2 - 4ac и выводится сообщение о том, что многочлен имеет реальные корни или не имеет их в зависимости от значения дискриминанта.
  10. В конце программы выводится сообщение о том, что многочлен представлен в каноническом виде.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы