Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Autor: Paweł Koniarski
- * Data: 23 kwietnia 2014 r.
- * Problem: Program zamieniajacy liczbe szesnastkowa na dziesietna lub
- * dziesietna na szesnastkowa.
- * Dane: Liczba 0 albo 1 definiujaca pozadane dzialanie oraz zaleznie od
- * wybranego dzialania liczba dziesietna albo szesnastkowa.
- * Wyniki: Zaleznie od pozadanego dzialania dana liczba dziesietna
- * zamieniona na szesnastkowa albo dana liczba szesnastkowa
- * zamieniona na dziesietna.
- * Plik: zad10-119.cpp
- */
- #include <iostream>
- using namespace std;
- unsigned long long hex2dec(string input);
- string dec2hex(unsigned long long i);
- int main() {
- bool choice;
- string i0;
- unsigned long long i1;
- cout << "0. Zamiana liczby szesnastkowej na dziesietna."
- << "1. Zamiana liczby dziesietnej na szesnastkowa.";
- cin >> choice;
- cout << choice << endl;
- if (choice == 0)
- {
- cout << "Podaj liczbe szesnastkowa: ";
- cin >> i0;
- cout << i0 << " zamienione na liczbe dziesietna to:\n" << hex2dec(i0);
- }
- else
- {
- cout << "Podaj liczbe dziesietna: ";
- cin >> i1;
- cout << i1 << " zamienione na liczbe dziesietna to:\n" << dec2hex(i1);
- }
- cout << endl << endl;
- return 0;
- }
- unsigned long long hex2dec(string s)
- {
- int v, i, length = s.size();
- unsigned long long n=0;
- for(i = 0; i < length; i++)
- {
- if ('a' <= s[i] && s[i] <='f')
- v = s[i] - 'a' + 10;
- else if ('A' <= s[i] && s[i] <='F')
- v = s[i] - 'A' + 10;
- else
- v = s[i] - '0';
- n = n * 16 + v;
- }
- return n;
- }
- string dec2hex(unsigned long long i)
- {
- string sHex;
- string sTmp = "0123456789ABCDEF";
- while (i)
- {
- sHex = sTmp[i%16] + sHex;
- i /= 16;
- }
- return sHex;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement