2017-11-28 2 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]'를 선언 할 수 있습니다. 배열 인덱스는 0부터 시작하여'num [num-1] [0]'예를 들어'a [0] [0]'->' 초보자라면 1 차원 배열로 시작해야 할 것입니다. –

답변

1

그래서, 대신

int a[num-1][2]; 

으로 선언 나는

int a[num][3] 

을 이용해야한다. 이전 코드에서는 배열 외부에서 값을 읽는 작업을 시도했습니다. 이제 코드는 어레이 외부를 읽지 않습니다.

관련 문제