これは宿題のように見えますが、宿題ではありませんのでご安心ください。C++ コースで使用する本の練習問題として、ポインターを先読みしようとしています。
この本の演習では、文をトークンに分割し、それぞれを豚ラテン語に変換してから表示するように指示されています..
pig latin は基本的にこのようになっています: ball は allboy in piglatin.. boy は oybay になります.. 最初の文字を取り出し、最後に置き、「ay」を追加します.
これまでのところ、これは私が持っているものです:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cstring>
using std::strtok;
using std::strcat;
using std::strcpy;
void printPigLatin( char * );
int main()
{
char sentence[500];
char *token;
cout << "Enter string to tokenize and convert: ";
cin.getline( sentence, 500 );
token = strtok( sentence, " " );
cout << "\nPig latin for each token will be: " << endl;
while( token != NULL )
{
printPigLatin( token );
token = strtok( NULL, " " );
}
return 0;
}
void printPigLatin( char *word )
{
char temp[50];
for( int i = 0; *word != '\0'; i++ )
{
temp[i] = word[i + 1];
}
strcat( temp, "ay" );
cout << temp << endl;
}
トークン化の部分は非常に明確に理解していますが、豚のラテン語を行う方法がわかりません..単に「ay」をトークンに追加することから始めて、結果がどうなるかを確認しようとしました..なぜプログラムが入るのかわかりません無限ループと「ayay」を表示し続けます..何かヒントはありますか?
編集:これは現在正常に動作しますが、「ay」を追加する前にトークンの最初の文字を追加する方法がわかりません
編集:これは私がそれを「見る」方法ですが、正しく実装する方法がわかりません..