Advertisement
lewapkon

zad10-119.cpp

Apr 22nd, 2014
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. /*
  2.  * Autor: Paweł Koniarski
  3.  * Data: 23 kwietnia 2014 r.
  4.  * Problem: Program zamieniajacy liczbe szesnastkowa na dziesietna lub
  5.  *          dziesietna na szesnastkowa.
  6.  *      Dane: Liczba 0 albo 1 definiujaca pozadane dzialanie oraz zaleznie od
  7.  *            wybranego dzialania liczba dziesietna albo szesnastkowa.
  8.  *      Wyniki: Zaleznie od pozadanego dzialania dana liczba dziesietna
  9.  *              zamieniona na szesnastkowa albo dana liczba szesnastkowa
  10.  *              zamieniona na dziesietna.
  11.  *      Plik: zad10-119.cpp
  12.  */
  13.  
  14. #include <iostream>
  15. using namespace std;
  16.  
  17. unsigned long long hex2dec(string input);
  18.  
  19. string dec2hex(unsigned long long i);
  20.  
  21. int main() {
  22.     bool choice;
  23.     string i0;
  24.     unsigned long long i1;
  25.    
  26.     cout << "0. Zamiana liczby szesnastkowej na dziesietna."
  27.          << "1. Zamiana liczby dziesietnej na szesnastkowa.";
  28.     cin >> choice;
  29.     cout << choice << endl;
  30.    
  31.     if (choice == 0)
  32.     {
  33.         cout << "Podaj liczbe szesnastkowa: ";
  34.         cin >> i0;
  35.         cout << i0 << " zamienione na liczbe dziesietna to:\n" << hex2dec(i0);
  36.     }
  37.     else
  38.     {
  39.         cout << "Podaj liczbe dziesietna: ";
  40.         cin >> i1;
  41.         cout << i1 << " zamienione na liczbe dziesietna to:\n" << dec2hex(i1);
  42.     }
  43.    
  44.     cout << endl << endl;
  45.     return 0;
  46. }
  47.  
  48. unsigned long long hex2dec(string s)
  49. {
  50.     int v, i, length = s.size();
  51.     unsigned long long n=0;
  52.    
  53.     for(i = 0; i < length; i++)
  54.     {
  55.         if      ('a' <= s[i] && s[i] <='f')
  56.             v = s[i] - 'a' + 10;
  57.         else if ('A' <= s[i] && s[i] <='F')
  58.             v = s[i] - 'A' + 10;
  59.         else
  60.             v = s[i] - '0';
  61.         n = n * 16 + v;
  62.     }
  63.     return n;
  64. }
  65.  
  66. string dec2hex(unsigned long long i)
  67. {
  68.     string sHex;
  69.     string sTmp = "0123456789ABCDEF";
  70.    
  71.     while (i)
  72.     {
  73.         sHex = sTmp[i%16] + sHex;
  74.         i /= 16;
  75.     }
  76.     return sHex;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement