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

Lekcja 16 gra

Ostatnio zmodyfikowano 2013-02-20 13:15
Autor Wiadomość
Eldakar
Temat założony przez niniejszego użytkownika
Lekcja 16 gra
» 2013-02-15 00:34:55
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand( time( NULL ) );
    int a =( rand() % 10 ) + 1;
    int b;
    int c = 0;
    std::cout << "Select correct number in the range of 1 to 10\n\n";
    do
    {
       
        std::cin >> b;
       
        if( b >= 1 && b != a && b <= 10 /* tutaj potrzebuje pomocy z załozeniem*/ )
        {
            std::cout << "try again" << std::endl;
            c++;
            std::cin.clear();
            std::cin.sync();
        }
        else
        {
            if( b != a )
                 std::cout << "idiot, choose integers in range" << std::endl;
           
            std::cin.clear();
            std::cin.sync();
        }
       
    } while( b != a );
   
    std::cout << "good for you \nlucky number = " << a << std::endl;
    std::cout << "number of trials = " << c << std::endl;
   
    return 0;
}

program działa prawie dobrze, tylko potrzebuje pomocy z założeniem w oznaczonym miejscu

jaki warunek napisać żeby zmienna należała do liczb całkowitych, ponieważ teraz program akceptuje każdą liczbe rzeczywistą z założonego zakresu i liczba powtórzeń zostaje zakłamana
P-76316
jsc
» 2013-02-15 01:02:46
W ifie może dodać warunek !cin.good ()
P-76318
Eldakar
Temat założony przez niniejszego użytkownika
» 2013-02-15 11:34:01
teraz nie akceptuje nawet całkowitych :) nie ma jakiegoś symbolu liczb całkowitych?
P-76331
Frish
» 2013-02-15 12:08:56
P-76332
stone
» 2013-02-15 12:15:12
A próbowałeś sprawdzić poprawność wprowadzenia przed sprawdzeniem czy a == b? Ja w swojej grze zrobiłem to w ten sposób:

C/C++
do
{
    cout << "Podaj liczbe: " << endl;
    cin >> a;
    poprawnosc = cin.good();
    cin.clear();
    cin.sync();
   
   
} while( poprawnosc == 0 );


Potem porównałem za pomocą switch, czy wprowadzona liczba równa się wylosowanej, jeżeli tak przechodził dalej, jeżeli nie za pomocą funkcji if sprawdziłem czy jest większa czy mniejsza i wypisałem komunikat.
P-76333
Adam3423
» 2013-02-15 12:20:53
program akceptuje rzeczywiste, ale i tak odbiera je jako calkowite wiec liczba prob nie jest zaklamana, poza tym jesli dobrze kojarze zadanie to program mial pokazywać komunikaty czy liczba którą podales jest wieksza czy mniejsza od wylosowanej;)
P-76334
Eldakar
Temat założony przez niniejszego użytkownika
» 2013-02-15 12:27:47
rzeczywiście przybliża :) i jak widzisz ta gra nie jest na razie skończona

ot finalna wersja

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
    srand( time( NULL ) );
    int a =( rand() % 10 ) + 1;
    int b;
    int c = 1;
    std::cout << "Select correct number in the range of 1 to 10\n\n";
    do
    {
       
        std::cin >> b;
       
        if(( b < 1 || b > 10 ) && b != a )
        {
            std::cout << "idiot, choose integers in range" << std::endl;
            std::cin.clear();
            std::cin.sync();
        }
        else
        {
            if( b >= 1 && b != a && b <= 10 && b < a )
            {
                std::cout << "try higher numbers" << std::endl;
                c++;
                std::cin.clear();
                std::cin.sync();
            }
            else
            {
                if( b >= 1 && b != a && b <= 10 && b > a )
                {
                    std::cout << "try lower numbers" << std::endl;
                    c++;
                    std::cin.clear();
                    std::cin.sync();
                }
            }
        }
       
    } while( b != a );
   
    std::cout << "good for you \nlucky number = " << a << std::endl;
    std::cout << "number of trials = " << c << std::endl;
   
    return 0;
}
P-76335
Adam3423
» 2013-02-15 12:34:57
jeżeli się nie myle to nie da się zrobić żeby wyświetlal błąd przy podaniu rzeczywistej(przynajmniej mój obecny stan wiedzy tego nie potrafi) ale ktoś bardziej doświadczony może to skoryguje;)
P-76336
« 1 » 2
  Strona 1 z 2 Następna strona