电话字生成器帮助C.
我有一些作业,直到我走到最后一步,我现在难倒,我真的很感激一些帮助.
该项目的前提是在给定电话号码的情况下创建可能的单词文件.用户打算输入格式为“### – ####”的数字.然后代码拉出连字符并将电话号码发送到方法wordGenerator.我知道在此之前一切正常.当需要输出时,我遇到问题的地方就是不同的词汇.这是我的方法的样子: // 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" */ ofstream outFile("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 */ const char * phoneLetters[] = {"###","###","ABC","DEF","GHI","JKL","MNO","PRS","TUV","WXY"}; // terminate if file could not be opened /* Write code to check if the file was opened successfully,and terminate if not */ if( !outFile ) { cerr << "The file could not be opened"; exit(1); } 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 */ outFile << phoneLetters[i7 + 2] << phoneLetters[i6 + 2] << phoneLetters[i5 + 2] << phoneLetters[i4 + 2] << phoneLetters[i3 + 2] << phoneLetters[i2 + 2] << phoneLetters[i1 + 2] << ' '; if ( ++count % 9 == 0 ) // form rows outFile << 'n'; } // end for } // end for } // end for } // end for } // end for } // end for } // end for // output phone number outFile << "nPhone 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 */ outFile.close(); system("pause"); } // end function wordGenerator 不幸的是,我被赋予了一个代码框架,并被告知填写空白以完成任务.评论被阻止的地方(/ * * /)是我必须填写代码的地方. 我不确定我需要做什么来输出可能的单词的正确格式.我尝试搜索谷歌,但我找到的所有结果使用更简单(在我看来)切换语句来实现这一点,我受限于模板:( 所有的帮助都很受欢迎,甚至是朝着正确的方向推进. 编辑: 编辑: 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-xxxxn"; // 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 return 0; } // end main 解决方法
如果你无法摆脱可怕的嵌套for语句,那么你可以使用以下行:
outFile << phoneLetters[n[0]][i1] << phoneLetters[n[1]][i2] << phoneLetters[n[2]][i3] << phoneLetters[n[3]][i4] << phoneLetters[n[4]][i5] << phoneLetters[n[5]][i6] << phoneLetters[n[6]][i7] << ' '; 关于代码的一些其他说明: >避免在C中使用退出,因为prevents destructors from running 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |