Cześć, mam problem z programem w C++ mam do napisania program o dzieleniu dowolnych wielomianów, kompiler nie zwraca mi żadnych błędów. Za każdym razem oblicza inne wartości dla tych samych wartości, proszę o pomoc pozdrawiam :D
#include <iostream>
#include <cmath>
using namespace std;
//dzielenie wielomianu A/D=Q + R
int stA,stB,stR,stQ; //stopnie wielomianow, dzielenie wielomianow odbywa sie poprzez A - dzielna | B - Dzielna | Q - wynik | R - reszta
double*Q=new double[stQ+1];
double*A=new double[stA+1];
double*B=new double[stB+1];
double*R=new double[stR+1];
void dzielenie(double *Q, double *R, const double *A, const double *B, int &stpQ, int &stpR, const int stpA, const int stpB)
{
for (int i=0; i <=stpA; i++) //pętla ktora przenosi wartosci z tablicy R do A
R[i]=A[i]; //przyrównuje na poczatku reszte do pierwszego wielomianu
stpQ = stpA-stpB;
stpR = stpB-1;
for (int j=0; j <=stpQ; j++) //pętla
{
Q[stpQ-j] = R[stpA-j] / B[stpB]; //obliczam wartosc Q dzielac najwiekszy wspolczynnik przy potege przy R przez najwiekszy przy potedze przy B
for (int i = stpA-j; i >= stpQ-j; i--)
R[i] -= Q[stpQ-j]*B[i-stpQ + j]; // odejmuje wartosci mnozenia B i Q od R[i] i wyliczam reszte
for (int i = stpR - 1; i>=0; i--){
if(R[i]<0){R[i]=0;}
}
}
cout << endl<< endl <<"Wynik: " << endl;
for (int i=stQ; i>=0;i--){
cout << Q[i] << "x^" << i << " + ";
}
//przedstawianie wyniku na ekranie
cout << endl<< endl <<"Reszta: " << endl;
for (int i=stR; i>=0;i--){
if (R[i]!=0){
cout << R[i] << "x^" << i << " + ";
}
else {cout << "0";}
}
cout <<endl;
}
int main()
{
cout << "Witaj! Podaj mi tutaj prosze najwyzsza potege wielomianu: " << endl;
cin >> stA;
if (stA<1 || stA<stB){
cout << "Blad, popraw dane! Pamietaj ze stopien wielomianu A musi byc wiekszy od wielomianu B i ze stopien wielomianu A nie moze byc rowny 0!";
return 0;
}
cout << "Teraz pora na wspolczynniki pierwszego wielomianu" <<endl;
for (int i=0;i<=stA;i++){
cout << "x^ " << i << " ";
cin >> A[i];
}
cout << "Znakomicie, nadszedl czas na podanie najwyzszej potegi wielomianu numer 2" <<endl;
cin >>stB;
cout << "Teraz pora na wspolczynniki drugiego wielomianu" <<endl;
for (int i=0;i<=stB;i++){
cout << "x^ " << i << " ";
cin >> B[i];
}
cout << endl << "Swietnie, to wszystko. Licze wynik dzielenia..." << endl << "-----------------";
dzielenie(Q,R,A,B,stQ,stR,stA,stB);
return 0;
}