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

Sprawdzenie poprawnosci wprowadzenia danych

Ostatnio zmodyfikowano 2014-12-10 07:43
Autor Wiadomość
Vanilka
Temat założony przez niniejszego użytkownika
» 2014-12-09 10:39:02
juz zalaczam :D jedno male ale :)_ jestem kobieta :)


obecnie wyglada to tak :


   do
    {

        system( "cls" );
        menu_poczatek();
        cin.clear();
        cin.sync();
        cin >> menu_wyb;
        cin.get();

        if ( menu_wyb == 1 )
        {
            Wybor_Gracza();
            cin.get();
            do
            {
                system( "cls" );
                Wybor_lvl();
                losowanie();

                cout << "czy zagrac jeszcze raz ??  tak =1 , nie = 2" << endl;

                cin >> odp;
            } while (odp != 2);
        }

       else if ( menu_wyb == 2 )
        {
            cout << "Jeszcze nie zaimplementowane" << endl;
        }

      else  if   ( menu_wyb == 3 )
        {
            cout << "Jeszcze nie zaimplementowane" << endl;

        }
       
       else
       {
        cout << tablica1[kod_j][9] << endl;
       }

        cin.get();
    } while ( odp != 2 );
}


Usunelam cin.fail()  bo i tak to nie zmienialo niczego.

Kod 1 z pierwszego posta dziala na tej samej zasadzie wiec w sumie nie ma sensu go przekopiowywac.

I teraz tak, o co chodzi, jeszcze raz powoli.


Rusza petla wyswietla MENU:

tablica1[0][10] = "1. Nowa Gra";
tablica1[0][11] = "2. Tablica Chwaly";
tablica1[0][12] = "3. Tablica Wstydu";

jezeli wprowadze wartosc 4, 5, 8 , 99 etc to zostanie wyswietlony komunikat



tablica1[0][9] = " Niewlasciwy wybor, sprobuj jeszcze raz";


po czym po kliknieciu w cokolwiek ekran sie wyczysci i MENU zostanie wyswietlone na nowo.

Jezeli uzytkownik wprowadzi wartosc : fvgfhgbwet   lub a  lub cokolwiek innego, ekran tylko sie wyczysci i na nowo pojawi sie menu juz bez wyswietlenia komunikatu bledu.

I to jest wlasnie moj problem.
Jezeli usune czyszczenie ekranu to istotnie pojawi sie komunikat. ale mi wlasnie zalezy na czyszczeniu ekranu.

Gdy dawalam if'a z cing.good lub cin.fail bylo tak samo.
P-122575
darko202
» 2014-12-09 12:18:36
>>jedno male ale :)_ jestem kobieta :)
Sorry !!


czyli jak zrozumiałem Twój problem jest linii
 cin >> menu_wyb;
 cin.get();
menu_wyb jest to typ int i po wczytaniu złego znaku jej wartość jest np. - 94380458
z opisu wnika, że wtedy ignoruje
cin.get();
pewnie powoduje to ww. błąd strumienia

1.
spróbuj skorzystać z funkcji atoi zastępując ta linię przez

  char buffer[256];
  printf ("Wybor opcji: ");
  fgets (buffer, 256, stdin);
  menu_wyb = atoi (buffer);  
  printf ("wybrano %d. ",menu_wyb );

sprawdziłem, że po próbie konwersji błędu otrzymujemy 0

lub
2.
 cin.clear();
 cin.sync();
 cin >> menu_wyb;
// teraz dodatkowe czyszczenie
    cin.clear();
    cin.sync();
 cin.get();

>>Jezeli usune czyszczenie ekranu to istotnie pojawi się komunikat.
usuniecie czyszczenia ma pomóc w diagnozie co się dzieje
jak będzie dobrze to je przywrócisz




P-122577
Vanilka
Temat założony przez niniejszego użytkownika
» 2014-12-10 07:43:30
witam :)

dziekuje :*  wlasnie to pomoglo.
Malo tego, po prostu dalam czyszczenie bufora cin za funkcje cin i pieknie wszystko dziala tak jak powinno :)
dziekuje bardzo za pomoc
P-122620
1 « 2 »
Poprzednia strona Strona 2 z 2