Здравствуйте. Думаю над такой задачей:
Как привести подобные слагаемые коэфф. при одинаковых степенях. У меня есть массив с размером с максимальную степень (10), я сначала умножаю каждый коэффициент на -0.5, затем вывожу, степени при этих коэффициентов увеличиваю на 2(т.к по условию x^2 умножается на каждое слагаемое). Затем вывожу всё, у меня всё правильно выводит(ниже код), только без приведения подобных. Как мне это сделать ? спасибо. Вопрос, кажется, довольно простым. В интернете искал ни одной статьи.
//Программа для получения нового полинома. Старый P(x) = E a(ij)^n
//Новый полином (x^2 - 0.5) * P(x)
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define SIZE 12
int main(int argc, char const *argv[])
{
/*
coeffs[] - массив коэффициентов, p[], b[] - вспомогательные массивы
degree[] - степень коэффициента, newDegree - новая степень
n - максимальная степень полинома, i - счётчик
*/
float coeffs[SIZE], b[SIZE], p[SIZE];
int n, i, degree[SIZE], newDegree[SIZE];
int oldDegree[SIZE];
do{
printf("Enter the degree n | 0 <= n <= 10 |: ");
scanf("%d", &n);
fflush(stdin);
} while(n < 0 || n > 10);
for(i = 0; i <= n; i++){
printf("Enter the coefficient coeffs[%d]: ", i);
while(scanf("%f", &coeffs[i]) != 1){
printf("Enter valid coeeficient[%d]:", i);
fflush(stdin);
}
degree[i] = i;
}
printf("P(x) = ");
for(i = 0; i <= n; i++){
//printf("%.0fx^%d", coeffs[i], degree[i]);
printf("%.0fx^%d", coeffs[i], degree[i]);
if(i != n)
printf(" + ");
//умножаем на -0.5 каждый коэффициент
p[i] = -(coeffs[i]/2);
//"прибавляем к каждой степени +2, т.к умножается на x^2"
//newDegree[i] = degree[i] + 2;
//два цикла, i j тая, проверить старые коэффициенты
newDegree[i] = degree[i] + 2;
}
printf("\n(x^2 - 0.5) * P(x) = ");
for(i = 0; i <= n; i++){
printf("%.0fx^%d", coeffs[i], newDegree[i]);
if(i != n)
printf(" + ");
}
// для красоты вывода
// for(i = 0; i <= n; i++){
// if(p[i] < 0 && coeffs[i] > 0){
// printf(" - %.1fx^%d", fabs(p[i]), degree[i]);
// } else {
// printf("%.1fx^%d", p[i], degree[i]);
// }
// }
for(i = 0; i <= n; i++){
printf("%5.1f^%d", p[i], degree[i]);
}
getch();
return 0;
}