Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <sstream> //do obslugi konwersji stringa na inta
  2.      
  3. int i, nr_int;
  4. string nr_str;
  5. double nr_db;
  6.  
  7. do
  8.     {
  9.         i=0; //zeruje przed nastepnym wywolaniem
  10.         error_flag=0;
  11.         cin.clear(); //czysci bufor strumienia przed ew. bledem
  12.         cin.sync();
  13.         getline(cin, nr_str);
  14.         while(i < nr_str.length() && error_flag==0) //wczytuje do konca stringa i dopoki nie nabito flagi bledu wewnatrz petli
  15.         {
  16.             int x = nr_str.at(i); //przypisuje numer ASCII z konkretnego wczytanego "znaku"
  17.             if((x<48 || x>57) && nr_str.at(i)!=46)  //akceptuje tylko cyfry 0-9 i kropke (po numerze ascii)
  18.                 error_flag=1;
  19.                
  20.                     i++; //inkrementacja, aby nast. razem byl badany nowy element, czy jest poprawny
  21.                    
  22.             if(i==10) //zeby nie wczytywalo za duzych liczb to przerywa, tutaj jest an miliard
  23.                 error_flag=1;
  24.         }
  25.      
  26.         if(error_flag==0)
  27.         //jesli poprawnie wczytano, to przypisuje intowi liczbe double w celu badania czy liczba jest calkowita
  28.         {
  29.             istringstream iss(nr_str);
  30.             iss >> nr_db;
  31.             nr_int=nr_db; //przypisanie intowi liczby double w celu badania czy liczba jest calkowita
  32.         }
  33.      
  34.         if(error_flag==1) //jesli wczytano niepoprawnie
  35.             out<<"Podaj poprawna liczbe"<<endl;
  36.         if(error_flag==0 && nr_db-nr_int!=0) //jesli przy nienabitej fladze natrafi na liczbe niecalkowita
  37.         {
  38.             cout<<"Wczytaj liczbe calkowita!"<<endl;
  39.             error_flag=1;
  40.         }
  41.         else if(error_flag==0 && nr_db<=0)
  42.         {
  43.             cout<<"Liczba musi byc dodatnia."<<endl;
  44.             error_flag=1;
  45.         }
  46.     }while(error_flag==1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement