1 / 4
Jun 2017

Witam,
Nurtuje mnie ostatnio problem wpisywania do konsoli dowolnej nieokreślonej liczby znaków (na przykład typu int)
Próbowałem to rozwiązać wprowadzając w pętli while linijkę typu" while(cin>>x)" gdzie x to wprowadzana zmienna.
Program wówczas przyjmuje w zasadzie w nieskończoność inty i nie chce działać dalej tak jak to sobie wyobrażam.
Jeśli ktoś ma jakieś sugestię to chętnie przeczytam, bo nie ukrywam męczy mnie ostatnio ten problem.
P.S. Próbowałem również włożyć getline w warunek pętli while jednak to też nie pomogło.

  • created

    Jun '17
  • last reply

    Aug '17
  • 3

    replies

  • 1.4k

    views

  • 4

    users

  • 3

    links

Kolego, nie rozumiem Twojego pytania, a już na pewno nie wiem co sobie wyobrażasz :wink:
Przeczytaj sobie tutorial kokoska odnośnie I/O dla C++: http://213.192.104.217/phpBB3-spoj-pl-backup/viewtopic.php?f=10&t=120766
Jeśli chcesz więcej to dobrze wspominam JĘZYK C++. SZKOŁA PROGRAMOWANIA Praty Stephena.
Albo podaj przykład jakie dane chcesz wczytać.

while(cin >> x) albo while(getline(cin, string)) zazwyczaj sprawdza się najlepiej.

27 days later

Trochę nie zrozumiale to opisujesz, jak to program nie robi tego, co oczekujesz?

Tak jak mówisz, pętla wykonuje się w nieskończoność, ale to co znajduje się w pętli jest tak i tak wykonywane...
Może wstawiłeś coś poza nią, na końcu programu i dziwisz się, czemu nie działają te linijki kodu hmm...?
Jeżeli dobrze rozumiem, to po prostu przenieś je do pętli while, jeżeli takie działanie będzie Ci odpowiadało?
Chyba, że chcesz samemu wyjść z tej "nieskończonej pętli", wtedy może na samym dole "While" dodaj dodatkowy cin>>(int) koniec, na przykład i wypisuj dla użytkownika coś w rodzaju: cout<<"Czy chcesz zakonczyc program? "1" = TAK, "0" = NIE.
Wtedy tylko poprawiasz warunek while, który będzie wyglądał teraz mniej więcej tak:
while(cin>>x&&koniec!=1)
{
Pętla
}

Pamiętaj tylko, żeby przy inicjowaniu zmiennej nadać: koniec = 0;

Pozdrawiam:)

EDIT:

Całość powinna wyglądać mniej więcej tak:

int x;
int koniec = 0;

int main()
{
    while(koniec!=1&&cin>>x)
    {
        cout<<x<<endl;
        cout<<"Czy chcesz zakonczyc? 1 = TAK | 0 = NIE"<<endl;
        cin>>koniec;

    }
    return 0;
}

ps.
Bardzo ważne, aby warunek był właśnie w podanej przeze mnie kolejności: while(koniec!=1&&cin>>x) inaczej, program wykonuje wczytywanie X i dopiero kończy program :wink:

26 days later

Jeżeli testujesz na konsoli [windowsowej] zasymuluj koniec danych wciśnięciem ctrl Z [linux ctrl d]
Najlepiej jednak testuj przekierowując dane z pliku lub na ideone.com [tam wpisując też koniecznie dane testowe do okienka stdin].

Suggested Topics

Want to read more? Browse other topics in Tutoriale, poradniki or view latest topics.