2014-09-16 2 views
1

내 코드에 약간의 문제가 있습니다. 입력에서 가장 큰 숫자를 계산하려고하는데, std::sort()을 사용하여 시도하고 싶습니다.배열을 정렬 한 후 왜 값 대신 주소가 표시됩니까?

#include<bits/stdc++.h> 
using namespace std; 

int main(){ 

    int arr[3]; 
    for(int i=0;i<3;++i){ 
     int x; 
     cin >> x; 
     arr[x]; 
    } 
    sort(arr, arr + 3, greater<int>()); 

    cout << arr[0] << endl; 
} 

내가 잘못 여기서 뭐하는 거지 : 지금은 출력에 출력이 코드, 가장 많은보다는 가장 많은 자체의 주소가? sort을 잘못 부르고 있습니까?

+1

'cin >> arr [i];'로 변경하십시오. – 101010

+2

오른쪽 헤더 ('#include ')를 사용해야합니다. – juanchopanza

+2

나는 루프 안에서'arr [i] = x; '를 의미 할 수도 있다고 생각한다. – Niall

답변

1

sort에 대한 전화가 올 바르지 만 배열 초기화가 올바르지 않습니다. 작성 중입니다.

for(int i=0;i<3;++i){ 
    int x; 
    cin>>x; 
    arr[x]; 
} 

마지막 문장 arr[x];은 아무런 효과가 없습니다. 여러분이 인쇄하는 주소로 해석하는 것은 대신 배열의 첫 번째 자리에 우연히 발생하는 가비지 값입니다.

나는 당신이 그렇게하면 모든 작업을 시작해야

arr[i] = x; 

를 작성하는 의미 생각합니다.

더 나은,이 글을 쓰는 시도 :

for(int i=0;i<3;++i){ 
    cin >> arr[i]; 
} 

는 앞으로 당신이 최대까지 당신의 컴파일러의 경고 수준을 크랭크해야합니다. 나는 대부분의 컴파일러가 당신의 진술이 아무런 효과가 없다는 사실을 발견 할 것이고, 이것은 당신을 문제의 근본 원인으로 만들었을 것이라고 확신한다.

희망이 도움이됩니다.

+0

우우 네 말이 맞아 :/네 도움을 많이 주셔서 감사합니다 :) – user3420119

관련 문제