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

[Lekcja 17] Chwila zwątpienia

Ostatnio zmodyfikowano 2011-09-17 16:47
Autor Wiadomość
Druzil
Temat założony przez niniejszego użytkownika
[Lekcja 17] Chwila zwątpienia
» 2011-09-17 16:29:17
Tak konkretniej chodzi o zadanie domowe:

"Napisz funkcję, która losuje liczbę z przedziału od 50 do 60 włącznie. Wywołaj funkcję kilka razy (wypisz wylosowane wartości na ekran) w celu przetestowania czy działa ona poprawnie."

Napisałem coś takiego:


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

void losowanie()
{
    int los = 0;
    srand( time( NULL ) );
    los =( rand() % 11 ) + 50;
    std::cout << los << std::endl;
}
int main()
{
    char znak;
    int z;
    std::cout << losowanie << std::endl;
    do
    {
        std::cout << "Czy losowac ponownie? (t/n) ";
        std::cin >> znak;
        switch( znak )
        {
        case 't':
            std::cout << losowanie << std::endl;
            z = 1;
            break;
        case 'n':
            z = 0;
            break;
        default:
            std::cout << "Zly znak!" << std::endl;
            z = 1;
            break;
        }
        std::cin.clear();
        std::cin.sync();
    } while( z != 0 );
   
}


I program niby działa, no ale za każdym razem "losuje" tylko i wyłącznie "1". Martwi mnie to tym bardziej, że gdy napisałem ten sam program bez użycia funkcji (tylko przeniosłem kod z funkcji losowanie do main) okazało się, że działa tak jak powinien...
Mógłby mi ktoś wytknąć co robię nie tak?
P-41091
imralav
» 2011-09-17 16:38:19
Gdy wywołujesz funkcję losowanie() nie rób tego w
cout <<
. Do tego przy wywoływaniu funkcji wpisuje się nawiasy okrągłe, których w Twoim kodzie brakuje.
P-41092
m4tx
» 2011-09-17 16:40:12
std::cout << losowanie << std::endl;

Czyżby przyzwyczajenia z Pascala? (czy czegoś podobnego?) Ty nie wywołujesz funkcji tutaj. Dopisz ().

void losowanie()

Void, ta? Hm... Ciekawe... A potem chcesz wypisać zwróconą wartość...
P-41093
Druzil
Temat założony przez niniejszego użytkownika
» 2011-09-17 16:47:40
Oj głupi ja głupi...

Już działa, dzięki xD


Bwt. Ta funkcja nigdy nie miała niczego zwracać :P

Poprawione:

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

void losowanie()
{
    int los = 0;
    srand( time( NULL ) );
    los =( rand() % 11 ) + 50;
    std::cout << los << std::endl;
}
int main()
{
    char znak;
    int z;
    losowanie();
    do
    {
        std::cout << "Czy losowac ponownie? (t/n) ";
        std::cin >> znak;
        switch( znak )
        {
        case 't':
            losowanie();
            z = 1;
            break;
        case 'n':
            z = 0;
            break;
        default:
            std::cout << "Zly znak!" << std::endl;
            z = 1;
            break;
        }
        std::cin.clear();
        std::cin.sync();
    } whi
P-41094
« 1 »
  Strona 1 z 1