Phoenix_x

Untitled

Feb 23rd, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. //Decimal to Hex through recursion
  2.  
  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <string> //string - поредица от символи - FE15A, става да се запише 16-ично число
  6. #include <algorithm> //библиотека, която може да revers-не  string - само с един ред, иначе for цикъл
  7.  
  8. using namespace std;
  9.  
  10. //декларация на функцията
  11. void convertToHex();
  12.  
  13. //глобални променливи
  14. string hexNum = "";//няколко символа, които представляват 16-ичното число
  15. int decimalNum; // числото, което потребителя ще въведе
  16.  
  17. void main()
  18. {
  19.     cout << "Decimal: ";
  20.     cin >> decimalNum;
  21.     cout << "Hexademical: ";
  22.  
  23.     convertToHex(); //извикване на рекурсивната функция
  24.     reverse(hexNum.begin(), hexNum.end()); //revers-ни всички символи от началото до края
  25.     cout << hexNum << endl;//принтирай вече revers-натото число
  26. }
  27.  
  28. void convertToHex()
  29. {
  30.     if (decimalNum != 0) //ако числото не е 0, дели го на 16 и така
  31.     {
  32.         int remainer = decimalNum % 16; // Пример 100 % 16 = 4
  33.         decimalNum /= 16; // Пример: 63/16 = 3 (заради целочислено делене)
  34.  
  35.         if (remainer < 10) //ако остатъка от 0 до 9
  36.         {
  37.             hexNum += to_string(remainer);
  38.         }
  39.  
  40.         else // ако остатъка е по-голям от 9... 10->А, 11->B...
  41.         {
  42.             switch (remainer)
  43.             {
  44.             case 10:
  45.                 hexNum += "A";
  46.                 break;
  47.             case 11:
  48.                 hexNum += "B";
  49.                 break;
  50.             case 12:
  51.                 hexNum += "C";
  52.                 break;
  53.             case 13:
  54.                 hexNum += "D";
  55.                 break;
  56.             case 14:
  57.                 hexNum += "E";
  58.                 break;
  59.             case 15:
  60.                 hexNum += "F";
  61.                 break;
  62.             }
  63.         }
  64.         convertToHex(); //рекурсия, ще се вика пак и пак докато числото не стане 0 (горе)
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment