Cześć ! :)
Mam do zrobienia zadanie na spoju = wykorzystanie schematu hornera do obliczenia wartości wielomianu. niby proste, ale nadal mi nie śmiga.
Wejście:
Na wejściu programu w kolejności jak niżej powinny się znaleźć następujące elementy:
- Liczba całkowita n ≤ 15 określająca stopień wielomianu;
- Rzeczywiste współczynniki wielomianu, począwszy od współczynnika przy zerowej potędze, a kończąc na współczynniku przy potędze najwyższej;
-
Pewna nieznana liczba rzeczywistych argumentów, dla których będzie liczona wartość wielomianu.
Oczywiście, chodzi o podpunkt 3.
Myślałam coś o
while ( cin >> pierwiastek ) { horner(tablicawspolczynniki, stopien, pierwiastek); }
SPOJ cały czas krzyczy na mnie, że mam błędną odpowiedź.
przykładowe wejście
3 -10.5 -4 5 -1 0 1 1.5 -2.5 -2 -3
poprawne wyjscie
-10.5 -10.5 -8.625 46.375 25.5 73.5
podsyłam mój kod:
#include <iostream>
#include <string>
#include <list>
using namespace std;
float horner(float wspolczynniki[], int stopien, int x) {
int wynik = wspolczynniki[0];
for (int i = 1; i <= stopien; i++)
{
wynik = wynik * x + wspolczynniki[i];
}
return wynik;
}
int main() {
float* tablicawspolczynniki;
floatstopien, pierwiastek;
list <float> l;
printf("stopien wielomianu: ");
cin >> stopien;
tablicawspolczynniki = new float[stopien + 1];
for (int i = stopien; i >= 0; i--)
{
cout << "wspolczynniki od konca: ";
cin >> tablicawspolczynniki[i];
}
printf("\npierwiastek, dla ktorego chcemy obliczyc wartosc : ");
while ( cin >> pierwiastek ) {
horner(tablicawspolczynniki, stopien, pierwiastek);
}
//cout << horner(tablicawspolczynniki, stopien, pierwiastek);
delete[] tablicawspolczynniki;
return 0;
}