0

C ++で次のことを行う方法を誰かが理解するのを手伝ってくれるかどうか、私は望んでいます: コマンドライン入力リダイレクトを使用して、ファイルの内容を2次元配列に保存します。

ファイルには、3 列の不明な行数が含まれます。このようなもの: 20 42 0.00 15 67 2.41 70 53 9.88

したがって、x 個の配列を保持できる配列を作成する必要があります。X はファイル内の行数です。各内部配列は、行の列の 1 つを保持します。

これを行う方法はわかりませんが、その方法に関するすべてのヘルプと指示に心から感謝します。

よろしくお願いします。

4

2 に答える 2

0
static const size_t START_SIZE = 100;

//allocate array of pointers
double** flt_arr = new double*[START_SIZE];

size_t current_size = START_SIZE;
size_t current_index = 0;

while (!cin.eof())
{
    double flt1, flt2, flt3;

    cin >> flt1 >> flt2 >> flt3;

    //check stream for bad read
    if (cin.fail())
    {
        cerr << "Input error on line " << current_index + 1 << "!" << endl;
        break;
    }

    if (current_size == current_index)
    {
        //grow array
        current_size += START_SIZE;

        double** tmp_arr = new double*[current_size];

        for (size_t count = 0; count < current_index; count++)
        {
            tmp_arr[count] = flt_arr[count];
        }

        delete [] flt_arr;
        flt_arr = tmp_arr;
    }

    //allocate row for current line
    flt_arr[current_index] = new double[3];

    flt_arr[current_index][0] = flt1;
    flt_arr[current_index][1] = flt2;
    flt_arr[current_index][2] = flt3;

    current_index++;
}

//clean up rows
for (size_t count = 0; count < current_index; count++)
{
    delete [] flt_arr[count];
}

//clean up array of pointers
delete [] flt_arr;
于 2012-10-13T01:17:56.273 に答える
0

これは宿題のように見えるので、いくつかの基本的なヒントをここに示します。

次のようなパイプを使用して、あるコマンドの出力を別のコマンドの入力として送信できます。

cat myfile.txt | myprogram

myprogramを使用してデータを読み取ることができますcin

始めるにはこれで十分です。

于 2012-10-12T23:35:43.540 に答える