Program na obliczenie wartości wielomianu schematem Hornera iteracyjne i rekurencyjnie
#include <iostream>
using namespace std;
float horner_r (int stopien, int tablica_wsploczynnikow[], int argument)
{
if (stopien==0)
return tablica_wsploczynnikow[0];
else
return horner_r(stopien-1,tablica_wsploczynnikow,argument)*argument+tablica_wsploczynnikow[stopien];
}
float horner_i (int stopien, int tablica_wsploczynnikow[], int argument)
{
float wynik=tablica_wsploczynnikow[0];
for (int i = 1; i<= stopien; i++)
{
wynik = wynik * argument + tablica_wsploczynnikow[i];
cout << i<<": "<<wynik<<endl;
}
return wynik;
}
int main()
{
int stopien,argument;
cout << "Podaj stopien wielomianu: " << endl;
cin>> stopien;
int tablica_wsploczynnikow[stopien];
cout << "Podaj argument dla ktorego chcesz obliczyc wielomian: " << endl;
cin >> argument;
cout << "Podaj wsploczynniki: "<< endl;
for(int i = 0; i <= stopien; i++)
{
cin >> tablica_wsploczynnikow[i];
}
cout <<"rekurencyjnie: " << horner_r(stopien,tablica_wsploczynnikow,argument)<<endl;
cout << "itercyjnie: " << horner_i(stopien,tablica_wsploczynnikow,argument);
return 0;
}
Program na zmianę liczby o podstawie 2-9 na liczbę dziesiętną
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
unsigned podstawa,L,c;
cout << "Podaj podstawe (2 do 10):";
cin >> podstawa;
cout << "\nPodaj liczbe: ";
cin>>s;
L = s[0] - int('0'); // Od pierwszego znaku w ASCII w s[] odejmujemy znak ASCII zera (48)
for(int i = 1; i < s.length(); i++)
{
c = s[i] - int('0'); //wczytujemy do c znak ASCII na i-pozycji i zmieniamy go na odpowiadaj¹ca mu liczbê
L = L * podstawa + c; // stosujemy schemat hornera
}
cout << "\nLiczba " << s << "(" << podstawa << ") = " << L << "(10)";
return 0;
}
No też się przygotowuję do matury rozszerzonej, zobaczymy jak to pójdzie ;D
OdpowiedzUsuń