Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nieskończona pętla i blad przy czyszczeniu konsoli

Ostatnio zmodyfikowano 2014-10-20 09:16
Autor Wiadomość
gero1913
Temat założony przez niniejszego użytkownika
Nieskończona pętla i blad przy czyszczeniu konsoli
» 2014-10-19 23:50:21
Witam. Problem jest zapewne trywialny ale że wyjadaczem w programowaniu jeszcze nie jestem to proszę o pomoc kogoś kto bardziej ogarnia.

C/C++
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;

int iloscrund;
int main()
{
    do
    { cout << "Ile rund chcialbys rozegrac w obecnej grze?" << endl;
        cin >> iloscrund;
        if( cin.fail() ) { cout << "Niestety wprowadziles niepoprawne dane" << endl; }
       
    } while( cin.fail() );
   
    system( "cls" );
   
    return 0; }

1 problem - przy wpisaniu niepoprawnych danych tworzy sie mi nieskonczona petla ktora ignoruje linijke : cin>>iloscrund;
czyli jak raz wpisze niepoprawna ilosc to ciagle wywala tylko komunikaty i nie daje okazji sie poprawic

2 problem - przy wpisaniu poprawnych danych program sie kompiluje i przechodzi dalej z tym ze wywala blad :
"sh: cls: nie znaleziono polecenia" Nie wiem czym jest to spowodowane i jak to naprawic.
Dodam ze moj OS to Linux a kompilator to CodeBlocks.

Z góry dziękuję za pomoc i przepraszam że zawracam wam głowę takimi pierdołami no ale większość rzeczy jest trudna zanim się jej nie nauczymy.
P-118976
Winner_Of_Death
» 2014-10-20 00:04:20
Pod linuksem używaj "clear" zamiast "cls"

EDIT:

Zapoznaj się z czyszczeniem strumienia
Przeczytaj o czyszczeniu pod linuksem ;)

http://cpp0x.pl/kursy/Kurs-STC​/169
P-118977
gero1913
Temat założony przez niniejszego użytkownika
» 2014-10-20 08:35:28
Ok,dziękuje.

A ma ktoś może pomysł co do problemu nr 1?
P-118985
Monika90
» 2014-10-20 09:16:51
po wystąpieniu błędu trzeba przywrócić strumień do poprawnego stanu, np. można tak
C/C++
#include <iostream>
#include <limits>

int main()
{
    using namespace std;
    int iloscrund;
    cout << "Podaj ilosc rund: ";
    while( !( cin >> iloscrund ) )
    {
        cin.clear();
        cin.ignore( numeric_limits < streamsize >::max(), '\n' );
        cout << "Niepoprawne dane, podaj ilosc rund: ";
    }
   
    cout << "Ilosc rund to " << iloscrund << endl;
}
P-118986
« 1 »
  Strona 1 z 1