gpt4 book ai didi

c++ - 电话词生成器帮助 C++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:17 25 4
gpt4 key购买 nike

我有一些作业一直在完成,直到我到达最后一步,现在我被难住了,我真的很感激你的帮助。

该项目的前提是创建一个包含给定电话号码的可能单词的文件。用户应输入格式为“###-####”的数字。然后代码将连字符拉出并将电话号码发送到方法 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

不幸的是,我得到了一个代码框架,并被告知要填写空白以完成作业。凡是注释被屏蔽的地方(/* */)都是我要填代码的地方。

我不确定我需要做什么来输出可能单词的正确格式。我尝试搜索谷歌,但我发现的所有结果都使用更简单(在我看来)的 switch 语句来实现这一点,我被模板限制了:(

感谢所有帮助,即使是朝着正确方向的插入。

编辑: 我只是想到了另一件事。我觉得如果有人甚至可以帮助我弄清楚如何单独而不是 block 地遍历 phoneLetters[] 的字符,那将是向前迈出的重要一步。 例子: 当读取电话号码的数字“2”而不是打印“ABC”时,为所有可能的组合打印“A”,然后转到“B”。

编辑: 这是我的 main():

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\n";

// 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++ - 电话词生成器帮助 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com