@mr_firuzinho

Как сделать подобные слагаемые коэффициентов многочлена с одинаковыми степенями?

Здравствуйте. Думаю над такой задачей:
5a26bf3883f89563107802.png
Как привести подобные слагаемые коэфф. при одинаковых степенях. У меня есть массив с размером с максимальную степень (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;
}
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Самый простой способ - представить полином как массив [0..n], где значение элемента массива - это коэффициент при соответствующей степени.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы