I am new to C++ (I am studying for an associates in CompSci) and have been asked to complete this assignment:
Write a program that prompts the user to enter a telephone number expressed in letters and outputs the corresponding telephone number in digits. If the user enters more than seven letters, then process only the first seven letters. Also output the – (hyphen) after the third digit. Allow the user to use both uppercase and lowercase letters as well as spaces between words. Moreover, your program should process as many telephone numbers as the user wants.
Below is my code. I have an issue where it loops, but it does not accept new input and seems to append the same input to the end of the original input. "callnow" outputs "225-5669" then when I input 'y' to enter another number it does not take input and outputs "225-5669225-5669." What might be causing this? I have tried moving the initialization of my variables into the do...while loop so as to effectively clear them and that did not work.
Thanks for any help in advance!
// Project 4
// Telephone Letter to Number Conversion
#include <iostream>
#include <string>
using namespace std;
int main()
{
// Declare variables
int x = 0;
int i = 0;
string phrase = "";
string str = "";
string number = "";
char tryAgain = 'y';
do
{
// Print directions to user
cout << "Please enter a 1 to 7 character phrase you "
<< "would like to convert to telephone numbers: " << endl;
// Input string into variable
getline(cin, str);
// Loop to check for spaces
for (x = 0; x < str.length(); x++)
{
if (str[x] != ' ')
phrase = phrase + str[x];
}
// Get individual letters
for (i = 0; i < 7; i++)
{
char letter;
letter = phrase[i];
// Convert Uppercase to Lowercase
if (letter >= 'A' && letter <= 'Z')
letter = tolower(letter);
// First 3
if (i < 3)
{
// Switch statement to convert letter to number
switch (letter)
{
case 'a':
case 'b':
case 'c':
number = number + '2';
break;
case 'd':
case 'e':
case 'f':
number = number + '3';
break;
case 'g':
case 'h':
case 'i':
number = number + '4';
break;
case 'j':
case 'k':
case 'l':
number = number + '5';
break;
case 'm':
case 'n':
case 'o':
number = number + '6';
break;
case 'p':
case 'q':
case 'r':
case 's':
number = number + '7';
break;
case 't':
case 'u':
case 'v':
number = number + '8';
break;
case 'w':
case 'x':
case 'y':
case 'z':
number = number + '9';
break;
default:
cout << "Not a letter.\n";
}
}
// Dash
else if (i == 3)
{
number = number + '-';
// Switch statement to convert letter to number
switch (letter)
{
case 'a':
case 'b':
case 'c':
number = number + '2';
break;
case 'd':
case 'e':
case 'f':
number = number + '3';
break;
case 'g':
case 'h':
case 'i':
number = number + '4';
break;
case 'j':
case 'k':
case 'l':
number = number + '5';
break;
case 'm':
case 'n':
case 'o':
number = number + '6';
break;
case 'p':
case 'q':
case 'r':
case 's':
number = number + '7';
break;
case 't':
case 'u':
case 'v':
number = number + '8';
break;
case 'w':
case 'x':
case 'y':
case 'z':
number = number + '9';
break;
default:
cout << "Not a letter.\n";
}
}
// Last 4
else
{
// Switch statement to convert letter to number
switch (letter)
{
case 'a':
case 'b':
case 'c':
number = number + '2';
break;
case 'd':
case 'e':
case 'f':
number = number + '3';
break;
case 'g':
case 'h':
case 'i':
number = number + '4';
break;
case 'j':
case 'k':
case 'l':
number = number + '5';
break;
case 'm':
case 'n':
case 'o':
number = number + '6';
break;
case 'p':
case 'q':
case 'r':
case 's':
number = number + '7';
break;
case 't':
case 'u':
case 'v':
number = number + '8';
break;
case 'w':
case 'x':
case 'y':
case 'z':
number = number + '9';
break;
default:
cout << "Not a letter.\n";
}
}
}
// Output number
cout << number << endl;
// Ask if they want to enter another number
cout << "Would you like to enter another phrase? (y/n) ";
cin >> tryAgain;
}
while (tryAgain != 'n');
return 0;
}