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

Sprawdzenie pracy domowej dział 17

Ostatnio zmodyfikowano 2016-09-14 16:50
Autor Wiadomość
silvergold
Temat założony przez niniejszego użytkownika
Sprawdzenie pracy domowej dział 17
» 2016-09-12 22:01:18
Witam, jeżeli możecie powiedzcie czy wszystko jest ok z programem. Według mnie działa prawidłowo, ale wole się upewnić, ponieważ jestem początkującym i dopiero się uczę ;)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int wylosuj( int a, int b )
{
    int liczba =(( rand() % b ) + a );
    return liczba;
}

int main()
{
    srand( time( NULL ) );
    int start;
    cin >> start;
    int stop;
    cin >> stop;
    int ile = 20;
    do
    {
        cout << wylosuj( start, stop ) << endl;
        ile--;
    } while( ile > 0 );
   
    system( "pause" );
    return 0;
}
P-151699
Gibas11
» 2016-09-12 22:28:17
Wejście:

1 5

Wyjście:

5
5
[...]
5

No jak na moje oko to nie działa. :P
P-151700
carlosmay
» 2016-09-12 23:55:28
Jeśli program ma losować liczby od start do stop, masz źle napisane obliczanie przedziału (tzn. wcale nie obliczasz).
P-151702
silvergold
Temat założony przez niniejszego użytkownika
» 2016-09-13 22:38:03
Wstawi ktoś prawidłowy kod?
P-151710
Gibas11
» 2016-09-13 23:54:30
return rand() %( b - a + 1 ) + a;
(b-a+1) to poprawny przedział.
P-151712
silvergold
Temat założony przez niniejszego użytkownika
» 2016-09-14 15:58:22
Dlaczego tak? Nie widziałem tego wcześniej w kursie...
Jaka jest różnica w działaniu tego kodu do tego który napisałem?
P-151722
mateczek
» 2016-09-14 16:21:43
jeśli chcesz by otrzymać liczby z przedziału od 10 do 15, to losujesz z przedziału od 0 do 5  i dodajesz 10,

wynik operaci "coś%6" jest reszta z dzielenia przez 6. Więc zwróci Ci zawsze liczbę z przedziału od <0 do 5> włącznie. To jest chyba jasne, że reszta z dzielenia przez "x" musi być zawsze mniejsza od "x"??

C/C++
// to nie jest kod c++ :P
dzielnikModulo = stop - start + 1 = 15 - 10 + 1 = 6
wylosowanaLicza = rand() % dzielnikModulo + 10; //rand()%dzielnikModulo - otrzymujesz liczby z przedziału od 0 do 5 włącznie
P-151723
karambaHZP
» 2016-09-14 16:50:44
Dlaczego tak? Nie widziałem tego wcześniej w kursie...
Funkcja rand() losuje wartość z przedziału 0 do RAND_MAX,
później wykonujesz na tej liczbie operacje z zakresu piątej klasy podstawówki (czyli wyznaczenie reszty z dzielenia i dodawanie).
P-151725
« 1 »
  Strona 1 z 1