4

文字列(スペース付き)を読み取って逆にする必要があります。

まず、コンソールから文字列を読み取ります。

char array[100];

for(int i = 0; i < sizeof(array); i++)
    array[i] = '0';

for(int i = 0; i < sizeof(array); i++)
    cout<<array[i]<<" ";

cout<<"\n\nenter your string: ";

cin.getline(array, 100);

cout<<"\n";

for(int i = 0; i < sizeof(array); i++)
    cout<<array[i]<<" ";   

次に、インデックス配列を作成して入力します。(スペーススポットを覚えるために)

cout<<"\n\nindexes: ";

int indexes[20];
for(int i = 0; i < 20; i++)
{
    indexes[i] = 0;
}

// filling the indexes array
int j = 0;
for(int i = 0; i < sizeof(array); i++)
{
    if(array[i] == '0') break;
    if(array[i] == ' ')  indexes[j++] = i;
}   
// validating indexes array
for(int i = 0; i < sizeof(indexes); i++)
{
    //if(indexes[i] == 0) break;
    cout<<indexes[i]<<" ";
}  

これが私の(賢くないと思います)アルゴリズムの始まりです。最初の言葉を逆にしたい。
このチャンクは実行されないようです。なんで?

// first word
int j1 = indexes[0]-1;
for(int i = 0; i > indexes[0]; i++)     
{
    new_array[i] = array[j1-i];
            cout<<"\naction\n";
}

new_arrayをコンソールに出力します。

for(int x = 0; x < sizeof(new_array); x++)
{
    if(new_array[x] == '0') break;
    cout<<new_array[x]<<" ";
}  

結果は次のとおりです。

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

文字列を入力してください:これは私の文字列です

thisismystring 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

インデックス:4 7 10 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -858993460 -858993460 100 -85 8993460 -858993460 100 -858993460 -858993460 100 -858993460 -858993460 193628786 0 544434464 1931508077 1852404340 805314663 808464432 808464432 808464432 808464 432 808464432 808464432 808464432 808464432 808464432 808464432 808464432 808464 432 808464432 808464432 808464432 808464432 808464432 808464432 808464432 808464 432 -858993460 -742139265 6421640 18244041 1 9932784 9 48 18244541

新しいアレイ:

インデックス配列にゼロの後にこれらの数値が含まれているのはなぜですか?長さはわずか20です。
なぜnew_arrayが出力されないのですか?

私の解決策は非常に面倒であることを私は知っています)

4

1 に答える 1

5

あなたの直感は正しいです:ループ実行されていません。問題は次のとおりです。

for(int i = 0; i > indexes[0]; i++)

比較はである必要がありますi < indexes[0]

于 2012-12-09T23:23:57.390 に答える