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

[Lekcja 17] Zadanie 2,Nie losuje mi w przedziale 50-60

Ostatnio zmodyfikowano 2012-02-01 09:45
Autor Wiadomość
drewnoo
Temat założony przez niniejszego użytkownika
[Lekcja 17] Zadanie 2,Nie losuje mi w przedziale 50-60
» 2012-01-31 20:58:33
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wczytajlosowanie()
{
    int liczba;
    liczba =( rand() % 40 ) + 30;
}
int main()
{
    srand( time( NULL ) );
    int wybor;
    do
    {
        cout << "Wylosowana liczba: " << wczytajlosowanie() << endl;
        cout << "Czy sie wszystko zgadza?\n1.Tak\n2.Powtorz  - ";
        cin >> wybor;
        switch( wybor )
        {
        case 1:
            cout << "No to Koniec:)";
            break;
        case 2:
            cout << "Powtarzamy:)" << endl;
            break;
        }
    } while( wybor != 1 );
   
    return 0;
}

Mam problem otóż nie losuje mi w przedziale od 50 do 60. losuje mi nawet do 108.Więc jak zrobić,żeby losowało.A mam drugie pytanie: Czy wykorzystanie funkcji w tym kodzie jest dobre,czy mogłoby być lepsze?

Co do pierwszego pytania

int wylosowana_liczba =( rand() % ile_liczb_w_przedziale ) + startowa_liczba;

Z lekcji o pseudolosowych liczbach calkowitych ustawia sie w powyzszy sposob do ilu moze losowac i od ilu moze loswac ja mam tak:
liczba = (rand() % 50) + 60;
Czyli powinno losowac do 60 a liczba poczatkowa powinno byc 50.Więc czego mi losuje do 108?

Podziekowania odrazu dla tych ktorzy mi pomoga;D
P-49910
jsc
» 2012-01-31 21:19:58
Zrobiłem parę losowań i nigdy nie przekroczyłem 70.
P-49917
drewnoo
Temat założony przez niniejszego użytkownika
» 2012-01-31 21:26:51
Mi natomiast wypisuje po 80,95,73 itd. a ma losowac od 50 do 60 więc...?

Bo chyba kompilator rozumie to wywołanie funkcji ze liczb w przedziale ma byc (losowanie % 50) + 50 (naprzyklad) a nie traktuje tych nawiasow i wykonuje dzialanie liczb w przedziale 50+50 czyli razem 100... Opuszczajac nawiasy(bo myslalem tak ze zadziala) nic nie dalo:/

bo podstawilem w liczbie przedzialow i w liczbie startowej 30 i 40 zeby bylo mniej zeby chociaz miescilo sie w granicach 50-70,ale chce zeby bylo tylko 50-60
P-49919
jsc
» 2012-01-31 21:34:06
Zaraz! Jakie liczby masz w rand, w kodzie który kompilujesz?

W wklejonym kodzie masz zupełnie co innego niż to na co się powołujesz w tekście posta.
P-49921
drewnoo
Temat założony przez niniejszego użytkownika
» 2012-01-31 22:03:38
No bo skoro jak wpisalem tam 50,60 i mi losowalo do 110 to wpisalem np. 30,40 albo 30,30 zeby losowalo do 60 ale losuje wtedy od 30
P-49924
jsc
» 2012-01-31 22:16:20
Zdecyduj się na jakąś parę powiedz czego od niej oczekujesz.
P-49925
SeaMonster131
» 2012-01-31 22:22:41
Losowanie między 50 a 60 włącznie?
C/C++
( rand() % 11 ) + 50

Startowa liczba to 50, liczb w przedziale jest 11, bo rand losuje liczby od 0 :)

50+(11-1) = 60;

czyli przedział liczb wynosi 50...60.
P-49926
DejaVu
» 2012-02-01 00:25:16
Cóż... szukacie dziury w całym, ale nie tam gdzie trzeba :)
Wróć do rozdziału: » Kurs C++ » Poziom 2Funkcje - pierwsze starcie lekcja.
P-49928
« 1 » 2
  Strona 1 z 2 Następna strona