Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Correct any errors in the following code: // Lab 1: telephoneWords.cpp #include

ID: 3900512 • Letter: C

Question

Correct any errors in the following code:

// Lab 1: telephoneWords.cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

void wordGenerator( const int * const );

int main()
{
int phoneNumber[ 7 ] = { 0 }; // holds phone number

// prompt user to enter phone number
cout << "Enter a phone number (digits 2 through 9) "
<< "in the form: xxx-xxxx ";

// loop 8 times: 7 digits plus hyphen;
// hyphen is not placed in phoneNumber
for ( int u = 0, v = 0; u < 8; u++ )
{
int i = cin.get();

// test if i is between 0 and 9
if ( i >= '0' && i <= '9' )
phoneNumber[ v++ ] = i - '0';
} // end for

wordGenerator( phoneNumber ); // form words from phone number
} // end main

// function to form words based on phone number
void wordGenerator( const int * const n )
{
// set output stream and open output file
/* Write a declaration for an ofstream object called
outFile to open the file "phone.dat" */

// letters corresponding to each number
/* Write a declaration for an array of 10 const char *'s
called phoneLetters. Use an initializer list to assign
each element of the array the corresponding string of
three letters. Use dummy characters for 0 and 1 */

// terminate if file could not be opened
/* Write code to check if the file was opened successfully,
and terminate if not */

int count = 0; // number of words found

// output all possible combinations
for ( int i1 = 0; i1 <= 2; i1++ )
{
for ( int i2 = 0; i2 <= 2; i2++ )
{
for ( int i3 = 0; i3 <= 2; i3++ )
{
for ( int i4 = 0; i4 <= 2; i4++ )
{
for ( int i5 = 0; i5 <= 2; i5++ )
{
for ( int i6 = 0; i6 <= 2; i6++ )
{
for ( int i7 = 0; i7 <= 2; i7++ )
{
/* Write a series of cascaded stream insertion
operations to output a set of seven letters
to outFile, followed by a space */

if ( ++count % 9 == 0 ) // form rows
outFile << ' ';
} // end for
} // end for
} // end for
} // end for
} // end for
} // end for
} // end for

// output phone number
outFile << " Phone number is ";

for ( int i = 0; i < 7; i++ )
{
if ( i == 3 )
outFile << '-';

outFile << n[ i ];
} // end for

/* Write a statement to close the ouput file */
} // end function wordGenerator

1. To determine every possible seven-letter word, you will need to use seven nested for loops and an array of char *, which can be thought of as a two-dimensional array of chars, containing the three letters that correspond to each digit.

2. To write a particular seven-letter word, output one character at a time. Use the array of char *’s, the first subscript of which will be the digit from the phone number and the second subscript of which will be the counter variable from the for loop that corresponds to this digit (i.e., the first letter will use the counter variable from the first, outermost for loop).

Explanation / Answer

Modified Source Code:-
-----------------------------
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void wordGenerator( const int * const );
int main()
{
int phoneNumber[7]={0}; // holds phone number
// prompt user to enter phone number
cout << "Enter a phone number (digits 2 through 9) "<< "in the form: xxx-xxxx ";
// loop 8 times: 7 digits plus hyphen;
// hyphen is not placed in phoneNumber
for(int u=0,v=0;u<8;u++)
{
int i = cin.get();
// test if i is between 0 and 9
if(i>='0'&&i<='9')
phoneNumber[ v++ ] = i - '0';
} // end for
wordGenerator( phoneNumber ); // form words from phone number
} // end main
// function to form words based on phone number
void wordGenerator(const int * const n)
{
ofstream outfile;
outfile.open("phone.dat");
if(!outfile.is_open())
{
cout<<"There is an Error in opening file"<<endl;
exit(0);
}
// set output stream and open output file
/* Write a declaration for an ofstream object called
outFile to open the file "phone.dat" */
// letters corresponding to each number
/* Write a declaration for an array of 10 const char *'s
called phoneLetters. Use an initializer list to assign
each element of the array the corresponding string of
three letters. Use dummy characters for 0 and 1 */
// terminate if file could not be opened
/* Write code to check if the file was opened successfully,and terminate if not */
int count = 0; // number of words found
// output all possible combinations
for(int i1=0;i1<=2;i1++)
{
for(int i2=0;i2<=2;i2++)
{
for(int i3=0;i3<=2;i3++)
{
for(int i4=0;i4<=2;i4++)
{
for(int i5=0;i5<=2;i5++)
{
for(int i6=0;i6<=2;i6++)
{
for(int i7=0;i7<=2;i7++)
{
/* Write a series of cascaded stream insertion
operations to output a set of seven letters to outFile, followed by a space */
if( ++count % 9 == 0 ) // form rows
outfile << ' ';
} // end for
} // end for
} // end for
} // end for
} // end for
} // end for
} // end for
// output phone number
outfile << " Phone number is "<<endl;
for(int i=0;i<7;i++)
{
if(i==3)
outfile << '-';
outfile<<n[i];
} // end for
/* Write a statement to close the ouput file */
} // end function wordGenerator


Sample Output:-
-------------------
Enter a phone number (digits 2 through 9) in the form: xxx-xxxx
7869345
--------------------------------
Process exited after 13.5 seconds with return value 0
Press any key to continue . . .


Output File("phone.dat"):-
----------------------------------
Phone number is
786-9345