Cześć, pisze sobie taki kalkulator wielomianowy i mam dodawanie, odejmowanie, dzielenie przez dwumian(metoda hornera) i mnożenie i zostawiłem na koniec dzielenie przez cokolwiek bo wiedziałem, że będzie najtrudniejsze no i mam napisane takie coś tylko, że to raz działa a raz program się wysypuje (częściej się wysypuje) albo np dla niektórych wielomianów np dla takich dla których wynik jest np. x^3+4 (że jest jakaś wartość dla trzeciej potęgi dla drugiej nie dla pierwszej nie i potem 4 w wyrazie wolnym) to outputem jest 1,jakieś głupoty typu nan albo jakieś duże cyfry Bozia wie skąd, 4. I chciałem zapytać jak to jest możliwe, że program nieraz dla tych samych danych wejścia działa a nieraz się sypie oraz proszę o rady co do kodu. Kod:
Oczywiście na początku pobieram od użytkownika stopnie wielomianów W(x) oraz P(x),
następnie użytkownik wprowadza współczynniki przy danej potędze a potem wybiera
co chce zrobić, case 6 to dzielenie.
Wspolczynniki przechowuje w ten sposob, ze np dla 8x^3-6x^2+11 mam
w wWx[3]=8, wWx[2]=-6, wWx[1]=0, wWx[0]=11
case 6:
{
float *WynDziel; //Wyniki
WynDziel = new float [stopienWx-1];
float *Nowe; //Wynik przemnozenia pierwszego wyniku
Nowe = new float [stopienWx]; //przez caly wielomian P(x)
float *NoweNowe; //To co powstaje po odjęciu Nowe[]
NoweNowe = new float [stopienWx]; od wielomianu
int pomocnicza=stopienWx;
for (int j=stopienWx; j>=0; j--)
{
NoweNowe[j]=wWx[j];
}
for (int i=stopienWx; i>=0; i--)
{
bool flag=false;
for (int n=stopienWx; n>=0; n--)
{
if (NoweNowe[n]!=0)
{
flag=false;
}
else
{
flag=true;
}
}
if (flag==true)
{
break;
}
if (NoweNowe[pomocnicza]!=0)
{
WynDziel[i-stopienPx]=NoweNowe[pomocnicza]/wPx[stopienPx];
for (int j=stopienPx; j>=0; j--)
{
Nowe[pomocnicza-stopienPx+j]+=WynDziel[i-stopienPx]*wPx[j];
}
for (int k=pomocnicza; k>=0; k--)
{
NoweNowe[k]=NoweNowe[k]-Nowe[k];
}
}
for (int s=stopienWx; s>=0; s--)
{
Nowe[s]=0;
}
pomocnicza--;
}
for (int b=stopienWx-1; b>=0; b--)
{
if (WynDziel[b]!=0)
{
cout<<WynDziel[b];
cout<<",";
}
}
}
break;