Guest User

Untitled

a guest
Jan 19th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <locale>
  4. #include <string>
  5. #include <iomanip>
  6.  
  7. using namespace std;
  8.  
  9. //Function Prototypes
  10. char GetNumber(char letter);
  11.  
  12. int main(){
  13.     //Program Variangles
  14.     string phone_number;
  15.     string output_number = "";
  16.     int num_length;
  17.     bool leading_one = false;
  18.  
  19.     //Declare and Open Input File
  20.     ifstream in_file;
  21.     in_file.open("mp4phoneinput.txt");
  22.  
  23.     //Loop through the file
  24.     while (in_file && !(in_file.eof())){
  25.         //Get the current line
  26.         getline(in_file, phone_number);
  27.         num_length = phone_number.length();
  28.  
  29.         //Dont display empty lines
  30.         if (num_length > 0){
  31.             //Echo current line
  32.             cout << phone_number << setw(20-num_length)
  33.                  << setfill(' ') << " -> ";
  34.  
  35.             //Check for leading 1
  36.             char lead_char = phone_number.at(0);
  37.             if (lead_char == '1')
  38.                 leading_one = true;
  39.  
  40.             //Loop through string and convert letters to numbers
  41.             //If there IS a leading one, start a char ahead
  42.             for (int i = leading_one; i < num_length; i++){
  43.                 char cur_letter = phone_number.at(i);
  44.                 if (cur_letter != '-')      //Dont parse hyphens
  45.                     output_number += GetNumber(cur_letter);
  46.             }
  47.  
  48.             //Format Output
  49.             if (leading_one){
  50.                 output_number = "1-" + output_number;
  51.                 output_number.insert(5, "-");
  52.                 output_number.insert(9, "-");
  53.  
  54.                 //Truncate extra numbers
  55.                 if (output_number.length() > 14)
  56.                     output_number.erase(14, output_number.length());
  57.                 cout << output_number;
  58.             }else{
  59.                 output_number.insert(3, "-");
  60.                 output_number.insert(7, "-");
  61.  
  62.                 //Truncate extra numbers
  63.                 if (output_number.length() > 12)
  64.                     output_number.erase(12, output_number.length());
  65.                 cout << "  " << output_number;
  66.             }
  67.  
  68.             //Reset loop variables
  69.             output_number = "";
  70.             leading_one = false;
  71.             cout << "\n\n";
  72.         }
  73.     }
  74.     return 0;
  75. }
  76.  
  77. //Conversion function:
  78. //converts chars to appropriate number
  79. char GetNumber(char letter){
  80.     letter = tolower(letter);
  81.     switch(letter){
  82.         case 'a':
  83.         case 'b':
  84.         case 'c': return '2'; break;
  85.         case 'd':
  86.         case 'e':
  87.         case 'f': return '3'; break;
  88.         case 'g':
  89.         case 'h':
  90.         case 'i': return '4'; break;
  91.         case 'j':
  92.         case 'k':
  93.         case 'l': return '5'; break;
  94.         case 'm':
  95.         case 'n':
  96.         case 'o': return '6'; break;
  97.         case 'p':
  98.         case 'q':
  99.         case 'r':
  100.         case 's': return '7'; break;
  101.         case 't':
  102.         case 'u':
  103.         case 'v': return '8'; break;
  104.         case 'w':
  105.         case 'x':
  106.         case 'y':
  107.         case 'z': return '9'; break;
  108.         //If not a letter, return argument
  109.         default: return letter;
  110.     }
  111. }
Add Comment
Please, Sign In to add comment