-1

この形式の入力を取得するのを手伝っていただけませんか。

{1,2,3,4}

そしてそれを整数の配列に変換しますか?

    int * ns = new int [n];
    cin >> ns;

これは動作しません。どうすれば変更できますか?

4

3 に答える 3

0

要素を1つずつ読み取り、配列に格納する必要があります。

int aNoOfElements = 0;
cin >> aNoOfElements;
int *anArray = new int[ aNoOfElements];     //allocate memory to hold aNoOfElements

for( int i = 0; i < aNoOfElements; i++ )
{
     cin >> anArray[ i ];                   // Read each input
}
于 2013-02-13T13:02:59.043 に答える
0

入力を解析する必要があります。入力を文字列として受け取り、必要な形式に準拠しているかどうかを確認します。使用できるアルゴリズム:

  1. 最初の文字が '{' かどうかを確認します
  2. はいの場合、変数(tempなど)を初期化して、取得しようとしている数値を(文字列として)空の文字列で保持します。そうでない場合はエラーになります
  3. 次の文字を読む
  4. '0' と '9' の間にある場合は、それを temp に追加してステップ 3 に戻り、それ以外の場合はステップ 5 に進みます
  5. コンマまたは '}' の場合は、temp を整数に変換して配列に入れ、空の文字列で temp を再初期化します。それ以外の場合はエラー
  6. まだ同じ文字で、コンマの場合は手順 3 に戻り、そうでない場合は完了

上記のアルゴリズムを動作するコードに変換できることを願っています。幸運を祈ります:)

PS: バグを見つけたら遠慮なく教えてください

于 2013-02-13T13:07:58.940 に答える
0
using namespace std;
typedef istream_iterator<int> It;
vector<int> v;
copy(It(cin), It(), back_inserter(v));
于 2013-02-13T12:50:47.067 に答える