0

私はクラスのためにこのプログラムを完成させようとしています。配列に関してはよくわからず、すべてのコースワークや本などを読みました。問題は、その位置で 2 次元配列要素をどのように増やすかです。

    int main()
{
 int quantity, warehouse, product;
int inventory[4][5] = {
{900,400,250,95,153},
{52, 95, 625, 44, 250},
{100,720,301,50,878},
{325,650,57,445,584},
};
cout << "Enter the warehouse number between 1 and 4: " << endl;
cin >> warehouse;
cout << "Enter the product location between 1 and 5: " << endl;
cin >> product;
cout << "Enter the quantity delivered: " << endl;
cin >> quantity;        

 /* First the addition */
for(warehouse = 0; warehouse < 4; warehouse++)
for(product = 0; product < 5; product++)
inventory[warehouse][product] + quantity;

cout << "The amount of units in warehouse " << warehouse << " is \n\n";


/* Then print the results */
for(warehouse = 0; warehouse < 4; warehouse++ ) {
                for( product = 0; product < 5; product++ )
                    cout << "\t" <<  inventory[warehouse][product];
                cout << endl;   /* at end of each warehouse */
}
 return 0;
}
4

3 に答える 3

1

の後の最初の 2 行

/* First the Addition */

変更したいインデックスに到達するために配列をループしようとしたようです。それは不要でした。

inventory[warehouse][product] += quantity;

プログラムを正しく動作させるために必要なのはそれだけです。ユーザーが指定した数量を、ユーザーが指定したインデックスに追加します。

于 2013-05-11T21:05:13.197 に答える
1
for(warehouse = 0; warehouse < 4; warehouse++)
for(product = 0; product < 5; product++)
inventory[warehouse][product] + quantity;

このように配列を反復処理する必要はまったくありません。forそれらのループを取り除きます。warehouseとのproduct値はユーザーが入力したものです。要素に対応する要素にアクセスして追加するだけです。

inventory[warehouse][product] += quantity;

の使用に注意してください+=。これは、単に値を取得して追加するのではなく、実際に配列内の値を変更しますquantity

次に、 に対応する倉庫の在庫のみを印刷したいようですwarehouse。これを行うには、すべての倉庫を反復処理するのではなく、製品のみを反復処理する必要があります。

for( product = 0; product < 5; product++ ) {
  cout << "\t" <<  inventory[warehouse][product];
}

ここでの教訓は、それぞれの要素に対して何かを行う必要がある場合にのみ、いくつかの要素を反復する必要があるということです。最初のケースでは、1 つの要素に値を追加するだけでよかったので、反復は必要ありません。2 番目のケースでは、要素の行を出力する必要があったため、その行だけを反復処理する必要がありました。

于 2013-05-11T20:51:23.147 に答える
0
inventory[warehouse][product] + quantity;

する必要があります

inventory[warehouse][product] += quantity;
//                            ^^

+加算のみを返し、そのオペランドを変更しません。a += bと同義a = a + bです。

ここでも for ループは必要ありません。値はすでに与えられています。

于 2013-05-11T20:50:55.493 に答える