1

私の最初のプログラミング課題の1つである、テキストからモールス信号への(およびバック)コンバーターに取り組んでいますが、何らかの理由で、単語の間にスペースがあるテキストを導入すると、プログラムが無限のループに入り、クラッシュします。何か案は?この説明がうまくいかない場合は申し訳ありませんが、それでもプログラミング用語に頭を悩ませています。

これは、正しく機能していないプログラムの一部です。

    {

        string user_input;
        cout << "----------------------------------------" <<endl
        << "Text to Morse Mode" << endl
        << "Enter text for conversion : "<<endl;
        cin >> user_input;
        cout << endl << endl << user_input << " converts to : ";
        unsigned int str_lenght;
        str_lenght=user_input.size();
        cout << endl;

        for (i=0;i<str_lenght;i++)
        {

            find_string=0;

            while (find_string < stop_string)
            {


                if (user_input[i]==text[find_string][0])
                {
                    count=1;
                    cout << morse[find_string] << " ";
                    break;


                }

                find_string = find_string+1;
            }

        }

        cout << endl << endl << endl;

        if (count==0)
            cout << endl << " an error was encountered " << "\a" << endl ;
    }
4

2 に答える 2

0

stop_string私が見たものからどこにも定義されていません。インクリメントによってループを中断するには、 を定義する必要がありますstop_string。に短縮することもfind_string = find_string+1;できますfind_string++

于 2012-08-26T17:36:56.933 に答える
0

まず、stop_string 変数をどこにも定義していません。最初にそれを定義するか、別の変数を使用してください。ここで文字列の長さを使用する場合は、作成した str_length を使用します。次に、単語の間にスペースを入力したい場合は、cin の代わりに getline を使用します。cin はスペース文字を区切ります。

于 2012-08-26T17:41:27.197 に答える