나는이 마지막 단계에 도달 할 때까지 나는 날아 다니는 숙제를 가지고 있는데, 지금은 곤란하다. 정말 도움이된다.전화 워드 생성기 도움말 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
불행히도 내가 코드의 골격을 부여하고 과제를 완료하기 위해 빈칸을 채워 들었다 : 여기처럼 내 방법은 모습입니다. 주석이 차단 된 모든 곳 (/ * * /)에서 코드를 작성해야합니다.
가능한 단어의 올바른 형식을 출력하려면 어떻게해야하는지 잘 모르겠습니다. 나는 Google 검색을 시도했지만, 내가 찾은 모든 결과는 훨씬 더 단순하게 (내 의견으로는) 전환문을 사용하여 이것을 달성하고 템플릿에 제약이있다. (
모든 도움을 주실 수 있습니다. 방향
것은 편집 :.. 다른 사람도 나를 phoneLetters의 문자를 반복하는 방법을 알아내는 데 도움 수 있다면 난 그냥 한 가지 생각 는 느낌 [] 개별적으로 대신 블록의, 그 중요한 단계가 될 것이라고 앞으로 예 : "ABC"를 인쇄하는 대신 전화 번호의 숫자 '2'를 읽을 때 모든 가능한 조합에 대해 'A'를 인쇄 한 다음 'B'로 이동하십시오.
편집 : 모든
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
, 그것은 쉽게 될 것입니다 당신이 각각의 글자를 반복하기 위해서 –
7 중첩 된 루프는 대개 바보 같은 일을하는 좋은 표지입니다. – AJG85
@Msonic 작업을 단순화합니다. –