Страница 1 из 1

умножение полиномов (исправить ошибку)

Добавлено: 14 май 2014, 15:33
dashka64

Код: Выделить всё

void Umnog (double *kA, double *kB, int degreeA, int degreeB ,char* path)
{
	
	int max;
    max = degreeA + degreeB;
    int *mul = new int[max + 1];
	memset(mul, 0, (max + 1)*sizeof(int));
    for (int i = 0; i <= degreeA ; i++)
	{
        for (int j = 0; j <= degreeB ; j++)
		{
			mul[i + j] += kA[i] * kB[j];
	        cout << mul[i + j];
	        cout << endl;
		    
		}
	}
	
}

При выводе пишет лишние коэффиценты.

Re: умножение полиномов (исправить ошибку)

Добавлено: 14 май 2014, 16:15
somewhere
А зачем выводить промежуточные результаты, когда они еще не подсчитаны?
Значение элемента с индексом i+j будет достоверно известно только после прохода двух вложенных циклов.
Например, при degreeA = 3 и degreeB = 4 значение mul[2] будет "довычисляться" (с накоплением) три раза:
i=0, j=2
i=1, j=1
i=2, j=0

Re: умножение полиномов (исправить ошибку)

Добавлено: 14 май 2014, 17:26
dashka64
Спасибо, все получилось.