2016-12-29 6 views
0

운동에 문제가 있습니다. 나는 몇 개의 숫자를 주어야하며, 프로그램은 역순으로 표시하지만 마지막으로 입력 한 번호는 표시하지 않는다.첫 번째 번호가없는 배열 반전

#include <iostream> 
#include <list> 
#include <cstdio> 

using namespace std; 

list <int> lista; 

int main() { 
    int liczba; 
    while ((cin >> liczba) &&(getchar()!='\n')) { 
     lista.push_front(liczba); 
    } 
    for(list<int>::iterator i=lista.begin();i != lista.end(); ++i) 
     cout<<*i<<" "; 

    return 0; 
} 

같은 당신이 입력 마지막 숫자 키를 누릅니다 \n 스트림에 추가됩니다, 입력 getchar()이를 데리러 때 std::vector

+1

마지막 숫자를 입력하고 * Enter * 키를 누르면 '\ n'이 스트림에 추가되고 'getchar()'가 선택됩니다. 하지만 그때 당신의 상태가 실패하므로 루프가 입력되지 않습니다. – WhiZTiM

+1

* std :: vector *와 동일하다. 또한, vector는'push_front' 함수가 없으므로리스트와 벡터 모두에 대해 단순히'push_back'을 호출 한 다음 역 반복자를 사용하여 루프 할 수 있습니다 ('rbegin(), rend()'). – PaulMcKenzie

+0

@PaulMcKenzie 또는'std :: deque'를 사용하십시오. –

답변

1

함께; 그러나 거기에 당신의 상태가 실패하므로 마지막 값을 읽을 때 루프가 입력되지 않습니다. 추가로 std::cin을 테스트 한 다음 번호를 추가 할 수 있습니다.

while ((cin >> liczba) &&(getchar()!='\n')) { 
    lista.push_front(liczba); 
} 
if(cin) 
    lista.push_front(liczba); //for the last item. 
+0

팸밤 완료 : D Thanks – Emilo