Witam. Dla własnych potrzeb, oraz ćwiczeń napisałem schemat Hornera całkowicie z głowy. Kod działa, jeżeli za pierwszym razem trafimy szukaną liczbę, czyli miejsce zerowe wielomianu. Przykładowe liczby na wejściu aby otrzymać 0 (2, 3, 5, 2, -1). Jeżeli zamiast -1, wpiszemy 1, lub cokolwiek innego, to program poprosi nas o ponowne podanie liczby, oraz poinformuje że poprzednia nie jest miejscem zerowym. Tu nadchodzi problem. Dlaczego po ponownym podaniu nawet dobrej liczby, otrzymuję inne wyniki niż w przypadku podania tej dobrej na początku.
Wiem dlaczego, gdzieś się dopisują liczby do zmiennej, ale za nic nie mogę znaleźć tego miejsca. Mogę na Was liczyć? :)
Kod:
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int stopien_wielomianu;
cout<<"Stopien wielomianu: ";
cin>>stopien_wielomianu;
int stopien_wielomianu_tab[stopien_wielomianu];
for (int i=0; i<=stopien_wielomianu; i++)
{
cout<<i+1<<". argument wielomianu: ";
cin>>stopien_wielomianu_tab[i];
}
int mnoznik;
cout<<"Mnoznik: ";
cin>>mnoznik;
int wynik=stopien_wielomianu_tab[0];
while (wynik!=0)
{
for (int i=0; i<stopien_wielomianu; i++)
{
wynik = (mnoznik * wynik) + stopien_wielomianu_tab[i+1];
}
cout<<endl<<wynik<<endl<<endl;
if (wynik == 0)
{
cout<<"Podany mnoznik "<<mnoznik<<" jest miejscem zerowym wielomianu"<<endl<<endl;
break;
}
else
{
cout<<"Podany mnoznik "<<mnoznik<<" nie jest miejscem zerowym wielomianu. Podaj inny mnoznik: ";
cin>>mnoznik;
}
}
system("pause");
return {};
}