-5

私はC ++を初めて使用し、現在すべてを試して調査しましたが、これまでのところ運がありません。これが私がすべきことです:

  • この割り当てでは、ユーザーが短い 1 行の文をいくつか入力できるようにします。
  • 各文は 500 文字のバッファに追加されます。
  • バッファー内の各文がヌルで終了していることを確認してください。
  • 各文がこのバッファに追加されると、文へのポインタが char ポインタの配列に格納されます。
  • ユーザーがゼロを入力すると、ユーザーからの入力を停止し、バッファ内の文を逆順に表示します。
  • 文中の単語ではなく、文の順序が逆になっていることに注意してください。たとえば、ユーザーが入力した場合。

私は現在、最初の部分で立ち往生しています。

int main () {
  int const SIZE = 500;
  char sentences[SIZE];
  char* pointers[SIZE];

  do {
   cout<<"Please enter small sentences, hit enter to continue or 0 to stop: "<<endl;
   cin.getline(sentences, 30);
   *pointers = sentences;
   cin.ignore();
 } while (!(cin.getline>>0));

 system ("PAUSE");
 return 0;

}

誰か助けてくれませんか?

4

3 に答える 3

0

ここにヒントがあります - 基本データを宣言し、このデータを操作するメソッドが必要です:

class Buffer       //buffer data combined with methods
{
private:
    char* buffdata;     //buffer to hold raw strings
    int buffsize;       //how big is buffdata
    int bufflast;       //point to null terminator for last saved string
    char** ray;         //declare ray[raysize] to hold saved strings
    int raysize;        //how big is ray[]
    int raycount;       //count how many strings saved
//methods here
public:
    Buffer() //constructor
    { // you figure out what goes here...
    }
    ~Buffer() //destructor
    { // release anything stored in buffers
    }
    add(char *str); //define method to add a string to your data above
    get(unsigned int index); //define method to extract numbered string from stored data
};
于 2013-10-03T21:30:38.717 に答える
-1

スポイラー警告

#include <cstring>
#include <iostream>

int main() {
  const int SIZE = 500;
  char sentenceBuffer[SIZE] = {0};
  char* sentences[SIZE / 2] = {0}; // shortest string is a char + '\0'
  int sentenceCount = 0;
  char* nextSentence = &sentenceBuffer[0];

  std::cout << "Enter sentences. Enter 0 to stop.\n";

  while (std::cin.getline(nextSentence, SIZE - (nextSentence - &sentenceBuffer[0]))) {
    if (0 == std::strcmp(nextSentence, "0")) {
      break;
    }
    sentences[sentenceCount] = nextSentence;
    ++sentenceCount;
    nextSentence += std::cin.gcount(); // '\n' stands in for '\0'
  }

  for (int i = sentenceCount - 1; i != -1; --i) {
    std::cout << sentences[i] << "\n";
  }

  return 0;
}
于 2013-10-03T19:06:26.410 に答える