Консультация № 188391
09.12.2015, 12:59
0.00 руб.
0 6 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Дан полином Pn(x)= a0+ a1 x+ a2 x^2+…+anx^n
Получить полином F(n+3)(x)= P_n(x) * (0.5 + x^3)
Как реализовать сложение коэффициентов при одинаковых степенях x при переходе к F(n+3)(x)
Код понимаю только на си
Заранее огромное спасибо
Код прилогается

Приложение:
#include <stdio.h>
#include <locale.h>
#include <conio.h>

int main()
{
char ext;
int a[9];
double b[13], c[16];
int n, m, o, q = 0, i, j, k; // q вспом. переменная (замена i) для получения коэф. массива b

setlocale(LC_ALL, "rus");
do {
do {
printf("\nВведите степень полинома:\n");
scanf("%d",&n);
} while ( n < 0 || n > 9);
printf("\nВведите коэфициенты: \n");
for( i = 0; i <= n; i++ )
{
printf("a[%d] = ", i);
scanf("%d",&a[i]);
}
printf("\nИсходный полином :Pn(x)= ");
for( i = 0; i <= n; i++ )
{
if(i == 0)
{
printf("%d", a[i]);
printf(" + ");
}
else
{
printf("%d*X^%d", a[i], i);
if (i != n)
printf(" + ");
else
printf("");
}

}
printf ("\n\nУмножаем исходный полином на ( x^3 + 0,5 )\n");
m = n + 10;
i = 0;
for ( j = 0; j <= n; j++ )
{ b[j] = a[i] * 1./2; i++; }
for ( j = n + 1; j <= m; j++ )
{
if (j>n)
{ b[j] = a[q=]; q++; }
}

printf ("\nКоэффициенты нового полинома Fn+3(x): ");
for( j = 0; j <= m; j++ )
printf("\nb[%d] = %lg ", j, b[j]);
printf("\n\nПолученный полином : Fn+3(x)= ");

for( j = 0; j <= m; j++ )
{
if(j == 0)
{
printf("%lg", b[j]);
printf(" + ");
}
else
{
printf("%lg*X^%d", b[j], j);
if (j != m)
printf(" + ");
else
printf("");
}

}

Обсуждение

давно
Посетитель
7438
7205
09.12.2015, 14:03
общий
это ответ
Здравствуйте, ksenya241!
Смотрите:
[code h=200]
#include <stdio.h>
#include <locale.h>
#include <conio.h>

#include <stdlib.h>

void PrintPolinom(float*a, int n)
{
for(int i = 0; i <= n; i++ )
{
if (a[i] != 0) //выводим только для ненулевых коэффициентов
{
if(i == 0)
printf("%g", a[i]); //для нулевого - только коэффициент
else if(i == 1)
printf(" + %g*X", a[i]); //для степени 1 - X без показателя степени
else
printf(" + %g*X^%d", a[i], i);
}
}
printf("\n");
}

int main()
{
char ext;
float a[10];
float b[13];
int n, m, i;

setlocale(LC_ALL, "rus");

do
{
printf("\nВведите степень полинома:\n");
scanf("%d",&n);
} while ( n < 0 || n > 9);

printf("\nВведите коэфициенты: \n");
for( i = 0; i <= n; i++ )
{
printf("a[%d] = ", i);
scanf("%g",&a[i]);
}

printf("\nИсходный полином:\nPn(x) = ");
PrintPolinom(a, n);

printf ("\nУмножаем исходный полином на ( x^3 + 0,5 )\n");
m = n + 3;
for ( i = 0; i <= m; i++ ) //обнулим коэффициенты новоо полинома
b[i] = 0;

for ( i = 0; i <= n; i++ )
{
b[i] += a[i] * 0.5; //накапливаем b[i] = a[i] * 0.5
b[i+3] += a[i]; //и a[i] * x^3
}

printf ("\nКоэффициенты нового полинома\nFn+3(x) = ");
PrintPolinom(b, m);

_getch();
return 0;
}
[/code]
5
то, что не проходили не понятно до конца, а так все отлично
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
09.12.2015, 14:39
общий
Адресаты:
Что именно "не понятно до конца"?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399275
16
09.12.2015, 14:43
общий
хотелось бы узнать, а без функций какая реализация у этой задачи, мы их еще не проходили
давно
Посетитель
7438
7205
09.12.2015, 14:50
общий
09.12.2015, 14:51
Адресаты:
Нет ничего проще!
[code h=200]
#include <stdio.h>
#include <locale.h>
#include <conio.h>

int main()
{
float a[10];
float b[13];
int n, m, i;

setlocale(LC_ALL, "rus");

do
{
printf("\nВведите степень полинома:\n");
scanf("%d",&n);
} while ( n < 0 || n > 9);

printf("\nВведите коэфициенты: \n");
for( i = 0; i <= n; i++ )
{
printf("a[%d] = ", i);
scanf("%g",&a[i]);
}

printf("\nИсходный полином:\nPn(x) = ");

for( i = 0; i <= n; i++ )
{
if (a[i] != 0) //выводим только для ненулевых коэффициентов
{
if(i == 0)
printf("%g", a[i]); //для нулевого - только коэффициент
else if(i == 1)
printf(" + %g*X", a[i]); //для степени 1 - X без показателя степени
else
printf(" + %g*X^%d", a[i], i);
}
}
printf("\n");

printf ("\nУмножаем исходный полином на ( x^3 + 0,5 )\n");
m = n + 3;
for ( i = 0; i <= m; i++ ) //обнулим коэффициенты новоо полинома
b[i] = 0;

for ( i = 0; i <= n; i++ )
{
b[i] += a[i] * (float)0.5; //накапливаем b[i] = a[i] * 0.5
b[i+3] += a[i]; //и a[i] * x^3
}

printf ("\nКоэффициенты нового полинома\nFn+3(x) = ");

for( i = 0; i <= m; i++ )
{
if (b[i] != 0) //выводим только для ненулевых коэффициентов
{
if(i == 0)
printf("%g", b[i]); //для нулевого - только коэффициент
else if(i == 1)
printf(" + %g*X", b[i]); //для степени 1 - X без показателя степени
else
printf(" + %g*X^%d", b[i], i);
}
}
printf("\n");

_getch();
return 0;
}
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
09.12.2015, 14:52
общий
Адресаты:
Так понятнее?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399275
16
09.12.2015, 14:58
общий
Вы спасли меня, огромное спасибо. Хорошо, что есть такие сервисы где можно получить быструю помощь
Форма ответа