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

pseudolosowe liczby

Ostatnio zmodyfikowano 2017-08-31 01:18
Autor Wiadomość
Tibijczyk
Temat założony przez niniejszego użytkownika
pseudolosowe liczby
» 2017-08-31 00:24:16
Mialem zaczynac 3 poziom kursu ale mialem problemy z poziomem 2 i polowy reczy nie rozumialem wiec zaczelem robic wszystkie prace domowe z poziomu 2 od paczatku nie korzystajac z pomocy.
Problem:
Nie wiem jak zabezpieczyc kod przed wpisaniem liter, liczbe trzeba wpisac 2 razy zeby program zareagowal.


C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>



int main()
{
    srand( time( NULL ) );
    int losuj =( std::rand() % 1000 ) + 1;
    std::cout << losuj << std::endl;
    int zgaduj;
    int strzaly = 0;
   
    do
    {
        std::cin.clear();
        std::cin.sync();
        std::cin >> zgaduj;
        if( std::cin.fail() )
        {
            std::cout << "liczba jest nieprawidlowa " << std::endl;
            break;
        }
        if( zgaduj > losuj )
        {
            std::cout << "podana liczba jest za duza" << std::endl;
            strzaly++;
           
        }
        else if( zgaduj < losuj )
        {
            std::cout << "podana liczba jest za mala" << std::endl;
           
            strzaly++;
        }
        else if( zgaduj == losuj )
        {
           
            std::cout << "trafiles" << losuj << "strzaly" << strzaly << std::endl;
        }
    } while( losuj != zgaduj );
   
   
    return 0;
}






Twoim zadaniem domowym jest napisanie prostej gry, która ma działać następująco:
1. Program losuje liczbę z przedziału od 1 do 1000.
2. Użytkownik zgaduje liczbę, która została wylosowana.
3. Jeżeli podana liczba jest za duża (za mała) gra wypisuje stosowny komunikat i powraca do kroku 2.
4. Jeżeli gracz trafi liczbę wylosowaną to progam kończy działanie, wypisując na ekran wylosowaną liczbę oraz liczbę 'strzałów', które oddał gracz.
Gra ma być zabezpieczona przed możliwością wprowadzenia błędnych wartości liczbowych.
P-164436
maly7
» 2017-08-31 00:35:45
W pętli zabrakło klamer dla else if lub niepotrzebnie wczytuje dane i inkrementujesz strzały dla pierwszego warunku. Teraz jeśli zgaduj > liczba strzały zwiększa się o 2 i wczyta 2 razy liczbę (bez obsługi pierwszej wczytanej).

Co do zabezpieczenia przed wpisaniem złych danych poczytaj o cin.good lub cin.fale
http://cpp0x.pl/kursy/Kurs-C++​/Poziom-1​/Obsluga-strumienia-wejscioweg​o​/12

Dodatkowo cin daj na początek pętli i usuń ten przed tą pętlą.
P-164437
Tibijczyk
Temat założony przez niniejszego użytkownika
» 2017-08-31 01:11:35
Kod poprawiony prosze o obadanie
P-164445
maly7
» 2017-08-31 01:18:29
Jeśli działa poprawnie (a powinien) to jest ok :D
Chociaż usunąłbym break i pozostawiłbym samo wyświetlanie komunikatu gdy ktoś poda np. literę.
Oraz wtedy drugi if zamienić na else if.

A i taki szczegół, jak to ma być gra to usunąłbym na początku wyświetlanie wylosowanej liczby :D
P-164446
« 1 »
  Strona 1 z 1