2017-11-28 9 views
-3

私は、ユーザーからの入力を受け取り、提供された入力を使って2次元配列を作成するプログラムを作成しようとしています。値を配列に適切に保存しますが、プログラムは適切に保存を実行できません。2次元配列をテキストファイルに書き込むにはどうすればよいですか?

誤った値が保存されます。ここでは、コードがあります:

#include <iostream> 
#include <fstream> 
#include <unistd.h> 
using namespace std; 

int main() 
{ 

int num; 
int productId =1; 


    cout << "Welcome To The Store Manager Registry! \n "; 

    cout << "How Many Products Would You Like To Add To The Registry?\n"; 

    cin >> num; 

if (num <= 0) 
     cout << "Please Enter A Valid Input More Than 0"; 

int a[num-1][2]; //creates a two dimensional array for items 
for (;productId-1<num;productId++) 
    { 
     cout << "\nPlease Enter The Cost Price For Product Id "<< productId << " (ONLY NUMBERS) \n"; 
     cin >> a[productId-1][0]; 
     cout << "\nPlease Enter The Selling Price For Product Id "<< productId << " (ONLY NUMBERS) \n"; 
     cin >> a[productId-1][1]; 
     a[productId-1][2]=a[productId-1][1]-a[productId-1][0]; 
    } //Receives Input And Saves Values To Array 
    cout << "Saving Data..."; 
    ofstream outputfile; 
    outputfile.open("Statistics.txt"); 



for (int b = 1;b<=num;b++){ 
     outputfile <<a[b-1][0]<<","<<a[b-1][1]<<","<<a[b-1][2]<<endl;//saves values to file 
} 
     outputfile.close(); 


    /* Saves Array In This Format: 
    Product Id  Cost Price   Selling price   Profit 
    1     10     20     10 
    2     20     20     0 
    3     30     10     -20 

    But, Prints In This Format 

     Product Id  Cost Price   Selling price   Profit 
    1     10     20      20 
    2     20     20      30 
    3     30     10     -20 

    */ 


} 

はここに入力します:enter image description here そして、ここではそれがに保存されます.txtファイルです:だからenter image description here 、最終的には、値が一致しないと、私はこの壊れたプログラムとこだわっています。私は3列と行のnum個の番号を必要とするので

+0

'int [num-1] [2];'は 'C++'でも有効ではありません。そうであっても。それは間違っています。 –

+0

このコードを修正するにはどうしたらいいですか? –

+0

あなたの英語のピッキング:あなたはすべての単語を大文字にする必要はありません。あなたは3行4列あるので 'a [3] [4]'が必要なようです。コンパイラが可変配列をサポートしている場合は、 'a [num] [4]'を宣言できます。配列インデックスはゼロから始まり、 'num [num-1] [0]'のように 'num [num] '、例えば' a [0] [0] ' - >あなたが初心者の場合は、1次元配列から始めなければならないかもしれません。 –

答えて

1

ので、代わりに

int a[num-1][2]; 

で宣言する私は

int a[num][3] 

を使用している必要があります。以前のコードでは、配列の外側で値を読み取ろうとしました。さて、コードは配列の外側を読み取ることはありません。

関連する問題