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ń