Zliczanie naciśniętych klawiszy do zmiennej w C++


(Rlk120) #1

Otóż mam taki kod :

#include 

#include 

#include 


int main() 

{ 


  // wylosowanie liczby 

 srand ((int) time(NULL)); 

  int nWylosowana = rand() % 100 + 1; 

 std::cout << "Wylosowano liczbe z przedzialu 1-100." << std::endl; 


  // pierwsza próba odgadnięcia liczby 

  int nWprowadzona; 

 std::cout << "Sprobuj ja odgadnac: "; 

  std::cin >> nWprowadzona; 


  // kolejne próby, aż do skutku - przy użyciu pętli while 

  while (nWprowadzona != nWylosowana) 

 { 

   if (nWprowadzona < nWylosowana) 

     std::cout << "Liczba jest zbyt mala."; 

   else 

     std::cout << "Za duza liczba."; 


   std::cout << " Sprobuj jeszcze raz: "; 

    std::cin >> nWprowadzona; 

 } 


 std::cout << "Celny strzal :) Brawo!" << std::endl; 


 getch(); 

}

Jednak on jest mało ważny w tym co chcę zrobić :slight_smile:

Chodzi mi o to, żeby ilość prób zgadnięcia liczby była wyświetlana pod koniec działania programu.

Kompletnie nie wiem jak się za to zabrać.

Proszę o pomoc.


(somekind) #2

Dodaj sobie zmienną będącą licznikiem prób i zwiększaj jej wartość w pętli while.


(Rlk120) #3

Czyli jak ?


(somekind) #4
#include //wystarczy

//#include //to nie jest potrzebne

//#include //a to dziadostwo tym bardziej


using namespace std; //żeby nie pisać wszędzie std::


int main()

{

    // wylosowanie liczby

    srand ((int) time(NULL));

    int nWylosowana = rand() % 100 + 1;

    cout << "Wylosowano liczbe z przedzialu 1-100.\n";


    // pierwsza próba odgadnięcia liczby

    int nWprowadzona;

    cout << "Sprobuj ja odgadnac: ";

    cin >> nWprowadzona;


    int licznik = 1; //licznik (jedna próba już była)


    // kolejne próby, aż do skutku - przy użyciu pętli while

    while (nWprowadzona != nWylosowana)

    {

        licznik++; //zwiększamy licznik

        if (nWprowadzona < nWylosowana)

            cout << "Liczba jest zbyt mala.";

        else

            cout << "Za duza liczba.";


        cout << " Sprobuj jeszcze raz: ";

        cin >> nWprowadzona;

    }


    cout << "Celny strzal :) Brawo!\nTrafiles w: " << licznik << " probach." << endl;


    cin.sync();

    cin.get();

}

(Zenstr) #5

Tak ,ale kod nie jest odporny na blondynkę.

Koniecznie dodaj to:

cin>>nWprowadzona;

if(!cin)

   {

     while(!cin)

       {

     cout<<"to nie jest liczba pacanie :";

     cin.clear();

     cin.sync();

     cin>>nWprowadzona;

       }

   }

Chociaż mój kod zabezpieczy tylko przed wpisywaniem samych liter i takiego wpisu: qwe3245,ale nie np: 1234ade :stuck_out_tongue: POPRAWCIE MÓJ KOD. :smiley: Pozdrawiam -- Dodane 24.06.2009 (Śr) 2:40 -- Nie było chętnych to sam wymysliłem:

#include //wystarczy

using namespace std; //żeby nie pisać wszędzie std::


int main()

{

    string Wprowadzona, Wyprowadzona;

    int Liczba = 0,licznik = 0;


    srand ((int) time(NULL));

    int nWylosowana = rand() % 100 + 1;


    cout << "Wylosowano liczbe z przedzialu 1-100.\n";

    cout << "Sprobuj ja odgadnac: ";


    while (Liczba != nWylosowana)

    {

       Wyprowadzona.clear();


       getline(cin,Wprowadzona);


       int String_size = Wprowadzona.size();


       for(int a = 0;a
       {


         if((Wprowadzona[a] >= 48) && (Wprowadzona[a]<= 57))

         {

         Wyprowadzona += Wprowadzona[a] ;

         }

       }


       Liczba = atoi(Wyprowadzona.c_str());


       licznik++;


       if (Liczba < nWylosowana)

       {

       cout << "Liczba jest zbyt mala.";

       cout << " Sprobuj jeszcze raz: ";

       }


       if(Liczba> nWylosowana)

       {

       cout << "Za duza liczba.";

       cout << " Sprobuj jeszcze raz: ";

       }

    }

    cout << "Celny strzal :) Brawo!\nTrafiles w: " << licznik << " probach." << endl;


    cin.sync();

    cin.get();

}

Teraz możesz wpisać np: ala2bns4 i masz liczbe 24. Stado blondynek tym załatwisz. :smiley:

Zastosuj to jak chcesz.

Zmień dla swoich potrzeb.

Pozdrawiam


(Rlk120) #6
cin.sync();

    cin.get();

A to za co odpowiada ? :smiley:


(Zenstr) #7
cin.sync();

ZBĘDNE

cin.get();

Bez tego nie zobaczysz ostatniego info :lol: Zapomniałem dodać na końcu

return 0;

(Rlk120) #8

Wielkie dzięki !

Jest ok :slight_smile: