2013-07-21 3 views
-2
int main() 
{ 
    int n, inInt; 
    vector <int> list; 
    ifstream ifs("1.txt"); 
    float a; 
    ifs >> a; 
    std::vector<int> result; 
    int temp; 

    while(! ifs.eof()) 
    { 
     ifs >> temp; 
     result.push_back(temp); 
    } 

    int b; 
    b = result.size(); 
    float array[b+1]; 
    int i; 
    array[0] = a; 

    for(i = 1;i < b+1;i++) { 
     array[i] = (array[i-1] + result[i]-2*array[i-1] * result[i]/a); 
    } 
    cout << array[b]; 

    system("pause"); 
    return 0;} 

기본적으로 내 코드에서 벡터를 작성하고 배열을 작성한 다음 배열의 벡터에서 데이터를 사용하려고합니다. 그러나 텍스트를 입력하면 코드가 잘못되었습니다. 번호.C++ 벡터 배열 오류

+3

했다. 해답이 초기 문제를 해결했지만 해결할 수없는 새로운 문제가 발생하면 새로운 질문을 게시하십시오. – ChrisF

답변

2

temp은 배열이 아니므로 temp은 int입니다. 당신은 그것을 할 수없는 int에 operator[]을 사용하려고합니다. 또한 VLA (가변 길이 어레이)는 GCC 확장이며 따라서 표준이 아닙니다. 난 당신이 라인을 대체 제안 :

float array[b+1]; 

으로 :

std::vector<float> array(b+1); 
+0

죄송합니다. 벡터에 익숙하지 않습니다. 배열 [i] = (array [i-1] + result [i] -2 * array [i-1] * result [i]/a); 이 부분을 어떻게 편집 할 수 있습니까? – user2604063

+0

필요가 없습니다. 벡터는 배열과 마찬가지로 작용합니다. 차이점은 크기가 변경되고 다른 것들 사이에서 자신의 메모리를 관리 할 수 ​​있다는 것입니다. 연산자 []는 배열 에서처럼 벡터에서 작동합니다. – Borgleader

+0

std :: vector 배열 (b + 1) ...? 배열 또는 벡터입니까? – user2604063

0

나는 적어도 두 가지 문제를 참조하십시오. 먼저 your input loop is incorrect을 입력하고 result에 잘못된 항목을 삽입합니다. 다음 루프의 입력을 사용하여이 문제를 해결할 수있다 : 유효 지수를 [0..b-1] 그래서

while (ifs >> temp) 
{ 
    result.push_back(temp); 
} 

둘째, 벡터는 resultb 요소를 포함한다. 루프 종료 조건 i < b+1result 끝의 한 요소를 읽습니다. 난 당신이 대신 수행하여이 문제를 해결할 수 있다고 생각 : 나는 이러한 변화를 만들어 입력 3 2 2을 사용

for(i = 0; i < b; i++) 
{ 
    array[i+1] = (array[i] + result[i]-2*array[i] * result[i]/a); 
} 

, 출력은 기존 답변을 잘못 확인하기 위해 질문을 수정하지 마십시오 1.66667

+0

Thx 정말 많이! – user2604063