2016-12-04 3 views
-4

私は、企業が1年間に4四半期に得た利益に関するデータを読み込む必要があります。私はこのコードが正しくないことを知っているが、私はそれを修正するために必要があります。ありがとう!教授は2次元配列になると言いました。文字列と整数を使って配列を書くにはどうしたらいいですか?私はこれに多くの助けが必要です!初心者プログラマーの学習C++誰かが文字列と整数を使って2D配列を書く方法を説明できますか?

int main() 
    { 
     int n; 
     string item; 
     const int quarter = 4; 
     int profit[15][quarter]; 
     cout<< "enter amount of items: "; 
     cin >> n; 

     readdata(item,n); 
     printarray(item,n); 
    } 

    void readdata (string item, int amount) 
    { 
    int i; 
    int j; 
    for(i = 0; i < amount; i++) 
    { 
     cout<< " Enter item name"; 
     cin >> item[i]; 
     for(j = 0; j < 4; j++) 
     { 
     cout<< "enter profit for quarter year: "; 
     cin >> profit[i][j]; 
     } 
     } 
    } 
    void printarray (string item, int k) 
    { 
     int m , j; 
     cout<< "data " << endl; 
     for (m = 0; m < k; m++) 
     { 
     for(j = 0; j < 4; j++) 
     { 
     cout<< profit[m][j]; 
     } 
     } 
    } 
+0

'std :: map 'が気になります。 –

+1

あなたの質問はあまり明確ではありません。 「文字列と整数」は何を意味していますか?あなたが試したことを歩き、そこから行ってください。 –

+0

CIでは 'struct'の配列の使用を検討しますが、C++では' class'オブジェクトの配列はもっと汎用的な解決法を提供するかもしれませんが(もっと速い解決法がありますが)、実際にはコードを読んで見知らぬ人があなたのためにそれを修正することを期待してください。私たちは、何を試したのか、どのようなエラーがあったのか、どこに解決策が残っているのかを知ることを期待しています。私たちはあなたのコードからこれらの事柄を推論するかもしれませんが、次の質問に移る前に見知らぬ人がどれくらいの仕事をしていると思いますか? – Myst

答えて

0

2D profitsの2つのディメンションは、年とアイテムの4分の1のようです。

string itemを、各項目名に1つの文字列の配列に置き換える必要があります。それはreaddataprintdata以内に表示されているので、

あなたは、グローバルスコープにmain内部からprofitを移動する必要があります:

int foo; // this is visible everywhere in this file 

void function1() { 
    foo = 42; // OK 
    bar = 43; // error: bar is only visible inside function2 
} 

void function2() { 
    int bar; // this is only visible inside function2 
    function1(); // bar is still not visible inside function1 
} 

あなたはreaddataを書き換える必要がありますので、項目名と保存を要求しますそれはあなたの文字列の項目名に含まれていて、その項目がユーザーが言っていた数だけ、その項目の四半期ごとの利益を求めます。

最後に、n/amount,itemとなります。ループカウンタにはすべて、より良い名前を付けることができます。 numOfItemsitemName


しかし、一般的には、C++で、整数のアレイ(又は2Dアレイ)よりも良好な解決策があります。 std::map,std::vectorおよびstd::arrayはより強力で使いやすいですが、使い慣れていると組み込みのアレイよりはるかに簡単です。たとえば、std::map<std::string, std::array<int,4>>を使用して、名前と四半期ごとの利益を単一の構造に格納することができます。

関連する問題