Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //kod wyjęty żywcem z upraszczacza; wersja surowa, więc daj sobie siana ze zgłaszaniem, jakich to on przypadków nie obsłuży bo ja to wiem
- double bezwzgledna(double wejscie){return ((wejscie<0) ? wejscie*(-1) : wejscie);}
- double potegowanie(double podstawa, int wykladnik){
- double wynik=1.0;
- bool licz=true;
- bool czy_blad=false;
- bool odwroc_wynik=false;
- if(podstawa==0&&wykladnik==0) {czy_blad=true;licz=false;}
- if(podstawa==0) {wynik=0;licz=false;}
- if(podstawa!=0&&wykladnik==0) {wynik=1;licz=false;}
- if(podstawa!=0&&wykladnik<0) {wykladnik=wykladnik*(-1);odwroc_wynik=true;}
- if(licz==true) {
- for(int i=1;i<=wykladnik;i++) {
- wynik=wynik*podstawa;
- }
- if(odwroc_wynik==true) {wynik=1/wynik;}
- } else {
- if(czy_blad==true) {
- return false;
- }
- }
- return wynik;
- }
- double pierwiastkowanie(int stopien, double wejscie, int precyzja){
- if(stopien<=1) return false;
- if(stopien%2==0&&wejscie<0) return false;
- bool wynik_ze_znakiem=false;
- if(wejscie<0) wynik_ze_znakiem=true;
- int j=0;
- double prec=1;
- double seek=0.0;
- while(1) {
- if(potegowanie(j,stopien)>bezwzgledna(wejscie)) break;
- j+=1;
- }
- j-=1;
- seek=j;
- for(int i=0;i<precyzja;i++){
- prec=prec*0.1;
- while(1){
- seek+=prec;
- if(potegowanie(seek,stopien)>bezwzgledna(wejscie)) break;
- }
- seek-=prec;
- }
- return ((wynik_ze_znakiem==true) ? seek*(-1) : seek);
- }
- int main(){
- for(;;){
- float wejscie=0.0;
- int wykl=0;
- cout << "\n Podaj liczbe podpierwiastkowa: ";
- cin >> wejscie;
- cout << "\n Podaj stopien pierwiastka: ";
- cin >> wykl;
- cout << "\n Pierwiastek stopnia " << wykl << ". z liczby " << wejscie << " wynosi (ok.) " << pierwiastkowanie(wykl,wejscie,10);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement