Phr0zen_Penguin

Digit.cpp - Get a Digit from a Specific Position

Aug 23rd, 2016
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 KB | None | 0 0
  1. /**
  2.  * [Digit.cpp]
  3.  * A program that returns the digit from a specified position in a provided integer.
  4.  *
  5.  * (c) Damion 'Phr0z3n.dev' Tapper, 2016
  6.  */
  7. #include <iostream>
  8. #include <sstream>
  9.  
  10.  
  11. /**
  12.  * Function Prototypes:
  13.  */
  14. int digit(int, int);
  15. std::string IntToString(int);
  16. int * StringToIntArray(std::string);
  17. std::string ReverseString(std::string);
  18.  
  19.  
  20. /**
  21.  *
  22.  */
  23. using std::cout;
  24. using std::cin;
  25. using std::endl;
  26.  
  27.  
  28. /**
  29.  * The main() function:
  30.  *
  31.  * The program entry point.
  32.  */
  33. int main(void)
  34. {
  35.     int number;
  36.     int position;
  37.  
  38.     /**
  39.      * Input:
  40.      */
  41.     cout << "Enter number:" << endl;
  42.     cin >> number;
  43.  
  44.     cout << endl << "Enter position:" << endl;
  45.     cin >> position;
  46.  
  47.     cout << endl;
  48.  
  49.     /**
  50.      * Output:
  51.      */
  52.     cout << digit(number, position) << endl;
  53.  
  54.     return 0;
  55. }
  56.  
  57.  
  58. /**
  59.  * The digit function:
  60.  *
  61.  * A function that returns the digit from a specified position in a provided integer.
  62.  */
  63. int digit(int num, int k)
  64. {
  65.         /**
  66.          * Error check:
  67.          */
  68.         if(num < 0)
  69.         {
  70.             cout << "Error!  Positive integers only!" << endl;
  71.  
  72.             exit(1);
  73.         }
  74.  
  75.  
  76.     /**
  77.      * Convert the number to string:
  78.      */
  79.     std::string StringBuff = IntToString(num);
  80.  
  81.         /**
  82.          * Error check:
  83.          */
  84.         if(k < 0 || k >= StringBuff.length())
  85.         {
  86.             cout << "Error!  Position out of range!" << endl;
  87.  
  88.             exit(1);
  89.         }
  90.  
  91.  
  92.     /**
  93.      * Reverse the string:
  94.      */
  95.     StringBuff = ReverseString(StringBuff);
  96.  
  97.  
  98.     /**
  99.      * Convert the string to an integer array:
  100.      */
  101.     int *IntArray = StringToIntArray(StringBuff);
  102.  
  103.  
  104.     /**
  105.      * Return the appropriate digit:
  106.      */
  107.     return IntArray[k];
  108. }
  109.  
  110.  
  111. /**
  112.  * The IntToString() function:
  113.  *
  114.  * A function that converts a given integer value to a string, and returns the conversion.
  115.  */
  116. std::string IntToString(int Number)
  117. {
  118.     std::ostringstream  converter;                                      // Converts from number to string.
  119.  
  120.  
  121.     /**
  122.      * Perform the conversion:
  123.      */
  124.     converter << Number;
  125.  
  126.  
  127.     /**
  128.      * Return the result:
  129.      */
  130.     return converter.str();
  131. }
  132.  
  133.  
  134. /**
  135.  * The StringToIntArray() function:
  136.  *
  137.  * A function that receives a string and returns and integer array representation of it.
  138.  */
  139. int * StringToIntArray(std::string StringBuff)
  140. {
  141.     int *IntArray = new int[StringBuff.length()];
  142.  
  143.  
  144.         /**
  145.          * Perform string conversion:
  146.          */
  147.         for(int i = 0; i < StringBuff.length(); i++)
  148.         {
  149.             switch(StringBuff.data()[i])
  150.             {
  151.                 case '0':
  152.                     IntArray[i] = 0;
  153.                     break;
  154.                 case '1':
  155.                     IntArray[i] = 1;
  156.                     break;
  157.                 case '2':
  158.                     IntArray[i] = 2;
  159.                     break;
  160.                 case '3':
  161.                     IntArray[i] = 3;
  162.                     break;
  163.                 case '4':
  164.                     IntArray[i] = 4;
  165.                     break;
  166.                 case '5':
  167.                     IntArray[i] = 5;
  168.                     break;
  169.                 case '6':
  170.                     IntArray[i] = 6;
  171.                     break;
  172.                 case '7':
  173.                     IntArray[i] = 7;
  174.                     break;
  175.                 case '8':
  176.                     IntArray[i] = 8;
  177.                     break;
  178.                 case '9':
  179.                     IntArray[i] = 9;
  180.                     break;
  181.                 default:
  182.                     IntArray[i] = '\0';
  183.                     break;
  184.             }
  185.         }
  186.  
  187.  
  188.     /**
  189.      * Null-terminate the integer array:
  190.      */
  191.     IntArray[StringBuff.length()] = '\0';
  192.  
  193.  
  194.     /**
  195.      * Return the array:
  196.      */
  197.     return IntArray;
  198. }
  199.  
  200.  
  201. /**
  202.  * The ReverseString() function:
  203.  *
  204.  * A function that returns the reversed version of a provided string.
  205.  */
  206. std::string ReverseString(std::string NewString)
  207. {
  208.     char    *RevArray = new char[NewString.length()];                               // The reversed version of the provided string.
  209.  
  210.  
  211.         /**
  212.          * Perform string reversal:
  213.          */
  214.         for(int i = 0, d = NewString.length() - 1; d >= 0; i++, d--)
  215.             RevArray[i] = NewString.data()[d];
  216.  
  217.  
  218.     /**
  219.      * Null-terminate the array:
  220.      */
  221.     RevArray[NewString.length()] = '\0';
  222.  
  223.  
  224.     /**
  225.      * Return the result:
  226.      */
  227.     return std::string(RevArray);
  228. }
Advertisement
Add Comment
Please, Sign In to add comment