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

Rozdział 17 zadanie domowe 1+pseudolosowe(...) Zadanie domowe.

Ostatnio zmodyfikowano 2012-11-16 09:49
Autor Wiadomość
kanam99
Temat założony przez niniejszego użytkownika
Rozdział 17 zadanie domowe 1+pseudolosowe(...) Zadanie domowe.
» 2012-11-15 21:39:25
Witam. Mam taki kod:

C/C++
#include <iostream>
int wczytajLiczbe()
{
    int a;
    bool ok; //czy liczba to int
    std::cin >> a;
    ok = std::cin.good();
    if( ok == false )
    do
    {
        std::cout << "Podales zla liczbe! Podaj liczbe calkowita!";
        std::cin >> a;
        ok = std::cin.good();
        std::cin.clear();
        std::cin.sync();
    } while( ok != true );
   
    return a;
}

int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

i jest problem iż gdy wpiszę liczbę zmiennoprzecinkową to program zaokrągla ją zamiast uruchomić pętlę i wypisać komunikat o treści "Podales zla liczbe! Podaj liczbe calkowita!". Macie pomysł co z tym zrobić?

I jeszcze jedno. Czy zadanie z pseudolosowych zrobiłem poprawnie?

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

int main()
{
    int koniec;
    do
    {
        int ilosc = 0;
       
        int liczba;
        srand( time( NULL ) );
        std::cout << "                          Zgadnij liczbe!" << std::endl;
        std::cout << "Losuje liczbe z zakresu 1 do 1000" << std::endl;
        int losowanie =( rand() % 1000 ) + 1;
        do
        {
            std::cout << "Zgadnij liczbe ktora zostala wylosowana:";
            std::cin >> liczba;
            std::cin.clear();
            std::cin.sync();
            ilosc++;
            if( liczba > losowanie )
                 std::cout << "Liczba jest za duza!" << std::endl;
           
            if( liczba < losowanie )
                 std::cout << "Liczba jest za mala!" << std::endl;
           
            if( liczba > 1000 )
                 std::cout << "Niepoprawna liczba!" << std::endl;
           
            if( liczba < 1 )
                 std::cout << "Niepoprawna liczba!" << std::endl;
           
            if( liczba == losowanie )
                 std::cout << "Gratulacje, wygrales!" << std::endl;
           
        } while( liczba != losowanie );
       
        std::cout << "Liczba prob:" << ilosc << std::endl;
        std::cout << "Jeszcze raz? Cokolwiek dla tak, 0 dla nie:";
        std::cin >> koniec;
        std::cin.clear();
        std::cin.sync();
       
    } while( koniec != 0 );
   
    std::cout << "Koniec :D By Kanam99 2012";
    return 0;
}
Z góry dziękuję za odpowiedzi i pozdrawiam.


P-69345
Mrovqa
» 2012-11-15 22:14:37
i jest problem iż gdy wpiszę liczbę zmiennoprzecinkową to program zaokrągla ją zamiast uruchomić pętlę i wypisać komunikat o treści "Podales zla liczbe! Podaj liczbe calkowita!". Macie pomysł co z tym zrobić?
Wczytujesz liczbę do zmiennej liczby całkowitej (int), więc nic dziwnego, że Ci ją zaokrągla.
P-69347
kanam99
Temat założony przez niniejszego użytkownika
» 2012-11-16 09:16:26
Wczytuję do zmiennej int i ją zaokrągla. To już wiem. Teraz pytanie jak to naprawić?
P-69359
wojownik266
» 2012-11-16 09:49:25
Zmienić typ zmiennej int na inny typ np. double.
P-69360
« 1 »
  Strona 1 z 1