2017-10-02 1 views
1

몇 가지 도움을 사용할 수 있습니다. 파일을 읽으려고합니다. 파일에 다음이 포함되어 있습니다.다차원 배열에 데이터 저장

1x+1y+1z=5 
2x+3y+5z=8 
4x+0y+5z=2 

이 파일을 2 차원 배열에 저장하고 싶습니다. 행은 3이고 열은 항상 4입니다.이 경우에는 정수 값만 저장하려고합니다. 1 1 5 2 3 5 8 4 0 5 2.이 값을 배열에 저장할 수 있습니까? 이것은 내가하려고했던 것이지만 작동하지 않습니다. 도와 주셔서 감사합니다.

int main(){ 

    fstream file; 


    file.open("matrix.txt", ios::in); 



    int arr[3][4]; 


     // copy integers into array and display 
     for (int i = 0; i < 3; i++){ 
      for(int j= 0; j < 4; j++){ 
      file >> arr[i][j]; 
      cout << arr[i][j]; 
      } 
     } 




} 
+0

입니다. 각 행이 플레이어에 해당하는 경우 사용자에게 플레이어 수를 묻는 이유는 무엇입니까? 입력 파일에서 숫자를 추출하는 방법은 무엇입니까? 나는 파싱/토큰 화를 볼 수 없습니까? – user501138

+0

@ user501138, 플레이어 수를 알 필요가 없습니다. 포인터를 사용하여 숫자를 조작 할 수있는 배열에 수식을 저장할 수있는 방법이 있는지 알고 싶습니다. – Dany

+0

왜'arr'이'new []'를 사용하여 동적으로 할당되지 않았을 때'delete [] arr'을 실행합니까? 또한 이것은 "1x + 1y + 1z = 5"문자열과 이와 같이 보이는 문자열을 4 개의 요소가있는 배열로 변환하려는 것과 더 관련이 있습니다. 이것은 사실상 파일 읽기와 관련이 없습니다. – PaulMcKenzie

답변

1

각 방정식에서 숫자를 추출한 다음 배열에 저장해야합니다. 나는이 숫자들을 추출하는 방법을 보여줄 것이고 나머지는 사소하다.

#include <iostream> 
#include <string> 
using namespace std; 


void getNumbers(string str, int&x, int&y, int& z) 
{ 
    string X, Y, Z; 

    size_t idx = str.find("x"); 
    size_t idy = str.find("y"); 
    size_t idz = str.find("z"); 

    X = str.substr(0, idx); 
    Y = str.substr(idx+1, idy-(idx+1)); 
    Z = str.substr(idy+1, idz-(idy+1)); 

    x = stoi(X); 
    y = stoi(Y); 
    z = stoi(Z); 
} 

int main() 
{ 
    string line("2x+82y-12z=5"); 

    int x(0), y(0), z(0); 
    getNumbers(line,x,y,z); 
    cout << line << endl; 
    cout << x << " " << y << " " << z << endl; 
    return 0; 
} 

결과는이 질문은 설명이 필요

2x+82y-12z=5 
2 82 -12 
1

내가 귀하의 위치에 있으면 파일에있는 모든 줄을 토큰 화하고 모든 번호를 조각으로 만듭니다. 그럼 내가 배열에 저장됩니다 (모든 숫자를 정수로 변환하는 것을 잊지 마십시오.)