Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Schemat Hornera v1
- int f(int *ws, unsigned int stopien, int x)
- {
- int wynik = ws[0];
- for(int i = 1; i <= stopien; i++)
- wynik = wynik * x + ws[i];
- return wynik;
- }
- // Schemat Hornera v2
- int f2(string &ws, unsigned int stopien, int x)
- {
- int wynik = ws[0] - '0';
- for(int i = 1; i <= stopien; i++)
- wynik = wynik * x + ws[i] - '0';
- return wynik;
- }
- // Zamiana przy uzyciu schematu Hornera
- int na10(string liczba, int x)
- {
- int len = liczba.length();
- int wynik;
- bool blad = false;
- if(liczba[0] >= 'A' && liczba[0] <= 'Z')
- wynik = liczba[0] - 55;
- else if(liczba[0] >= 'a' && liczba[0] <= 'z')
- wynik = liczba[0] - 87;
- else if(liczba[0] >= '0' && liczba[0] <= '9')
- wynik = liczba[0] - '0';
- else blad = true;
- for(int i = 1; i < len; i++)
- {
- if(liczba[i] >= 'A' && liczba[i] <= 'Z')
- wynik = wynik * x + liczba[i] - 55;
- else if(liczba[i] >= 'a' && liczba[i] <= 'z')
- wynik = wynik * x + liczba[i] - 87;
- else if(liczba[i] >= '0' && liczba[i] <= '9')
- wynik = wynik * x + liczba[i] - '0';
- else blad = true;
- }
- if(blad == false) return wynik;
- else
- {
- cout << "Blad w zapisie";
- return -1;
- }
- }
- int na10normalnie(string liczba, int podstawa)
- {
- int len = liczba.length();
- int wynik = 0;
- int p = 1; // do ktorej potegi
- int x = 0;
- bool blad = false;
- for(int i = len - 1; i >= 0; i--)
- {
- if(liczba[i] >= 'A' && liczba[i] <= 'Z')
- x = liczba[i] - 55;
- else if(liczba[i] >= 'a' && liczba[i] <= 'z')
- x = liczba[i] - 87;
- else if(liczba[i] >= '0' && liczba[i] <= '9')
- x = liczba[i] - '0';
- else blad = true;
- wynik = wynik + (x * p);
- p = p * podstawa;
- }
- if(!blad) return wynik;
- else { cout << "blad"; return -1; }
- }
- string naSystem(int liczba, int podstawa)
- {
- string wynik = "";
- string wzorzec = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- while(liczba > 0)
- {
- wynik = wzorzec[liczba % podstawa] + wynik;
- liczba = liczba / podstawa;
- }
- return wynik;
- }
- // P - pole czyli ten pierwiastek do kwadratu
- // P - liczba ktora pierwiastkujemy
- // eps - przyblizenie
- double sq(double P, double eps)
- {
- double a = 1.0f;
- double b = P;
- // Precyzja
- while(fabs(a - b) > eps)
- {
- a = (a + b) / 2;
- b = P / a;
- }
- return a;
- }
- // a - podstawa potegi
- // n - wykladnik potegi
- long long potega(long long a, unsigned int n)
- {
- long long wynik = 1;
- while(n > 0)
- {
- if(n % 2 == 1) // jezeli bit jest = 1
- wynik = wynik * a;
- a = a * a;
- n = n / 2; // skrocenie o jeden bit
- }
- return wynik;
- }
- // POROWNANIA ILOSC
- void m1(double *ws, double n, double a, double b, int porownan)
- {
- double x0;
- double f0;
- double fa = f(ws, n, a);
- double fb = f(ws, n, b);
- if(fa * fb > 0)
- {
- cout << "Funkcja nie spelnia zalozen";
- return;
- }
- else
- {
- int i = 0;
- while(i < porownan)
- {
- x0 = (a + b) / 2;
- f0 - f(ws, n, x0);
- if(fa * fb < 0)
- {
- b = x0;
- fb = f0;
- }
- else
- {
- a = x0;
- fa = f0;
- }
- i++;
- }
- cout << "x0 = " << x0 << endl;
- }
- }
- // PRZYBLIZENIE DO WARTOSCI PIERWIASTKA
- void m2(double *ws, double n, double a, double b, double eps)
- {
- double x0;
- double f0;
- double fa = f(ws, n, a);
- double fb = f(ws, n, b);
- if(fa * fb > 0)
- {
- cout << "blad";
- return;
- }
- else
- {
- while(true)
- {
- x0 = (a + b) / 2;
- f0 = f(ws, n, x0);
- if(fabs(f0) < eps)
- {
- cout << "x0 = " << x0;
- break;
- }
- if(fa * fb < 0)
- {
- b = x0;
- fb = f0;
- }
- else
- {
- a = x0;
- fa = f0;
- }
- }
- }
- }
- // PRZYBLIZENIE - CZY WARTO POROWNYWAC
- void m3(double *ws, double n, double a, double b, double eps)
- {
- double x0;
- double f0;
- double fa = f(ws, n, a);
- double fb = f(ws, n, b);
- if(fa * fb > 0)
- {
- cout << "blad";
- return;
- }
- else
- {
- while(true)
- {
- x0 = (a + b) / 2;
- f0 = f(ws, n, x0);
- if(fabs(a - b) < eps)
- {
- cout << "x0 = " << x0;
- break;
- }
- if(fa * fb < 0)
- {
- b = x0;
- fb = f0;
- }
- else
- {
- a = x0;
- fa = f0;
- }
- }
- }
- }
- // Obliczanie pola pod wykresem funkcji metoda z nadmiarem / niedomiarem
- double calka0(double *ws, int size, double a, double b, double eps)
- {
- double P = 0.0f;
- for (double i = a; i <= b; i += eps)
- {
- double fa = f(ws, size, i);
- P = P + (fa * eps);
- }
- return P;
- }
- // Obliczanie pola pod wykresem funkcji - prostokatow / 2
- double calka1(double *ws, int size, double a, double b, double eps)
- {
- double P = 0.0f;
- for (double i = a; i <= b; i += eps)
- {
- double fa = f(ws, size, i);
- double fc = f(ws, size, i + eps);
- double sr = (fa + fc) / 2;
- P = P + (sr * eps);
- }
- return P;
- }
- // Obliczanie pola metoda trapezow
- double calka2(double *ws, int size, double a, double b, double eps)
- {
- double P = 0.0f;
- for (double i = a; i <= b; i += eps)
- {
- double fa = f(ws, size, i);
- double fb = f(ws, size, i + eps);
- P = P + (fa + fb) * eps / 2;
- }
- return P;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement