Step 1: Requirements - Phone Dialing Program Your mission: A prepaid phone servi
ID: 3628707 • Letter: S
Question
Step 1: Requirements - Phone Dialing ProgramYour mission: A prepaid phone service needs a program that converts alphanumeric keyboard input into a phone number. The user will input eight characters and the program will output either an error message or the translated seven-digit phone number. The input may contain digits, letters, or both. Letters can be uppercase or lowercase.
The program will perform the conversion per a standard telephone keypad layout.
0
5
J K L
1
6
M N O
2
A B C
7
P Q R S
3
D E F
8
T U V
4
G H I
9
W X Y Z
The program implements the following methods.
* Main(): Declares seven character variables and passes these to the following methods by reference:
o ProcessInput(): gets user input and performs the conversion
o ShowResults(): displays the results
* GetInput(): Gets seven characters from the user and stores them into the seven variables Main() has passed by reference.
* ProcessInput(): Calls ToDigit() for each, passing each character variable by reference, and returns one of these codes to Main() by value:
o 0 if there were no input errors
o -1 if there were input errors
Input errors include the following:
o The first character is 0 (seven-digit phone numbers can't start with 0).
o The first three characters are "555" (no phone numbers start with 555).
o Any character is not a digit or an uppercase or lowercase letter.
* ToDigit(): Converts a character (passed by reference) to its corresponding digit per the table above, and returns one of these codes to ProcessInput() by value:
o 0 if the character is valid (a digit or uppercase or lowercase letter)
o -1 if the character is not valid
* ShowResults(): Writes converted telephone number to the screen, inserting a dash (-) between the third and fourth digits, and accepts the seven character variables from Main() by reference.
Sample Output:
Enter a 7 character phone number: 2132121
The converted phone number is: 213-2121
Enter a 7 character phone number: 2scdfER
The converted phone number is: 272-3337
Enter a 7 character phone number: 555resw
Invalid input, please try again.
Enter a 7 character phone number: 0988765
Invalid input, please try again.
Enter a 7 character phone number: 12345678
Invalid input, please try again.
Enter a 7 character phone number: @34*uy
Invalid input, please try again.
Tips
Best practice: Don't try to write too much at a time! First, write an outline in comments based on the requirements and the pseudocode. Then, implement declaring seven char variables. Make sure to fix any compiler errors before implementing more. Then, write and call an empty GetInput() method that accepts parameters, but does nothing but return a dummy value. Make sure you can pass the seven character variables by reference without compiler errors before implementing any of the GetInput() logic. Keep working incrementally like this, testing as you go. Set breakpoints and use the debugger at each phase to make sure your logic is working correctly. Then, use the same approach to implement the other methods. Test each phase with valid input before handling any invalid conditions.
Pseudocode
* ProcessInput( ) Method
o Get 7 characters from the user and store them in the 7 variables that Main() has passed by reference
o Call ToDigit() for each of the 7 characters
+ If toDigit returns an error code (-1), return an error code (-1)
o If the first character is 0, return an error code (-1) to Main()
o If the first three characters are 555, return an error code (-1)
o If there are no errors, return 0
* ToDigit ( ) Method
o Convert the characters (passed from ProcessInput() by reference) to upper case
o Use a switch statement to translate characters into their corresponding digits.
+ Write a case statement for each digit and for each valid uppercase letter
+ Write a default case that returns an error code (-1) for invalid letters
o If there are no invalid letters, return 0
* ShowResults ( ) Method
o Display the Phone Number using the character variables Main() has passed by reference
* Main() Method
o Declare 7 char variables
o Get user input by calling the GetInput() method, passing it the 7 variables by reference
o Perform the conversion by calling the ProcessInput( ) method, passing it the 7 variables by reference
o Display an error message or call ShowResults(), depending on the code ProcessInput() returns
Explanation / Answer
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PhoneDial { class Program { static void ToDigit(ref char digit) { digit = Char.ToUpper(digit); char result; switch (digit) { case '0': result = '0'; break; case '1': result = '1'; break; case '2': case 'A': case 'B': case 'C': result = '2'; break; case '3': case 'D': case 'E': case 'F': result = '3'; break; case '4': case 'G': case 'H': case 'I': result = '4'; break; case '5': case 'J': case 'K': case 'L': result = '5'; break; case '6': case 'M': case 'N': case 'O': result = '6'; break; case '7': case 'P': case 'Q': case 'R': case 'S': result = '7'; break; case '8': case 'T': case 'U': case 'V': result = '8'; break; case '9': case 'W': case 'X': case 'Y': case 'Z': result = '9'; break; default: result = 'e'; break; } digit = result; } static void GetInput(ref char d1, ref char d2, ref char d3, ref char d4, ref char d5, ref char d6, ref char d7) { string phoneNo; do { Console.Write(" Enter 7 charcater phone number: "); phoneNo = Console.ReadLine(); d1 = phoneNo[0]; if (d1.Equals('q') || d2.Equals('Q')) System.Environment.Exit(0); if (phoneNo.Length != 7) Console.WriteLine("invalid input, try again"); } while (phoneNo.Length != 7); d2 = phoneNo[1]; d3 = phoneNo[2]; d4 = phoneNo[3]; d5 = phoneNo[4]; d6 = phoneNo[5]; d7 = phoneNo[6]; } static int ProcessInput(ref char d1, ref char d2, ref char d3, ref char d4, ref char d5, ref char d6, ref char d7) { ToDigit(ref d1); ToDigit(ref d2); ToDigit(ref d3); ToDigit(ref d4); ToDigit(ref d5); ToDigit(ref d6); ToDigit(ref d7); if (d1 == '5' && d2 == '5' && d3 == '5') { return -1; } else if (d1 == '0') { return -1; } else return 0; } static void ShowResult(char d1, char d2, char d3, char d4, char d5, char d6, char d7) { Console.WriteLine("The converted phone number is: {0}{1}{2}{3}{4}{5}{6}{7}", d1, d2, d3, "-", d4, d5, d6, d7); } static void Main(string[] args) { char digit1 = ' ', digit2 = ' ', digit3 = ' ', digit4 = ' ', digit5 = ' ', digit6 = ' ', digit7 = ' '; int errorCode = 0; do { GetInput(ref digit1, ref digit2, ref digit3, ref digit4, ref digit5, ref digit6, ref digit7); errorCode = ProcessInput(ref digit1, ref digit2, ref digit3, ref digit4, ref digit5, ref digit6, ref digit7); if (errorCode != 0) Console.WriteLine("invalid input, try again"); else ShowResult(digit1, digit2, digit3, digit4, digit5, digit6, digit7); } while (errorCode != -5); } } }
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.