-1

次のようなように、Cの文の各単語を反転しようとしています:

「私は大きな犬が好きです」は「私のような大きな犬」になります。

これまでのところ、次のコードがあります。

//  the following effectively flips a sentence so "I like big dogs" would become
    "sgod gib ekil I"

for (i=0;i<length/2;i++){ // length is length of the string
    temp=ret[length-(i+1)]; //ret is the string
    ret[length-(i+1)]=ret[i];
    ret[i]=temp;
}
    //now this part should flip each individual word to the right way
//pos and lengthPlacer are both initialized as 0
while(pos<length){
    lengthPlacer++;
    if (ret[lengthPlacer]==' ' || lengthPlacer==length){
for (i=pos;i<(lengthPlacer)/2;i++){
    temp=ret[lengthPlacer-(i+pos+1)];
    ret[lengthPlacer-(i+pos+1)]=ret[i];
    ret[i]=temp;
}   
    pos=lengthPlacer+1;
    }
}
return ret; //this returns "dogs gib ekil I" unfortunately (only flips 1st word)

}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

lengthPlacer 変数と同時に pos 変数をインクリメントしています。最初にスペースまでインクリメントする内部ループが必要であり、その後、逆方向のループが続きます。

while(pos<length){
  while (lengthPlacer < length)
    if (ret[lengthPlacer]==' ') break;
  }
  next = pos + (lengthPlacer-pos)/2;
  while (pos < next){
    etc...
  }   
  // Also here skip any spaces that might be dangling
}
于 2013-02-14T02:14:27.080 に答える