Advertisement
amermo

Pretvaranje binarnog u dekadski

Mar 14th, 2015
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <stdexcept>
  4.  
  5. bool CistiBroj(std::string s)
  6. {
  7.     for(int i(0); i < s.length(); i++)
  8.         if(!(s[i] >= '0' && s[i] <= '1' || s[0] == '-'))
  9.             return false;
  10.     return true;
  11. }
  12.  
  13. int bin2dec(std::string s)
  14. {
  15.     if(!CistiBroj(s)) throw std::domain_error("Proslijedjeni broj nije binarni!");
  16.     int decimalni(0);
  17.     for(int i(0), j(0); i < s.length(); i++)
  18.     {
  19.         int pow(1);
  20.         j++;
  21.         if(s[i] == '1')
  22.             for(int k(0); k < s.length() - j; k++, pow*=2);
  23.         else
  24.             pow = 0;
  25.         decimalni+=pow;
  26.     }
  27.     if(s[0] == '-')
  28.         decimalni*=-1;
  29.     return decimalni;
  30. }
  31.  
  32. int main()
  33. {
  34.     try
  35.     {
  36.         std::string s;
  37.         std::cout << "Unesite binarni broj: ";
  38.         std::getline(std::cin, s);
  39.         std::cout << "Uneseni broj u dekadskom je: " << bin2dec(s);
  40.     }
  41.     catch(std::domain_error izuzetak)
  42.     {
  43.         std::cout << izuzetak.what() << std::endl;
  44.     }
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement