Lekcja 2.17 nr 4
Ostatnio zmodyfikowano 2016-07-26 00:22
CCbolt Temat założony przez niniejszego użytkownika |
Lekcja 2.17 nr 4 » 2016-07-24 15:05:27 Próbuję zrozumieć pewną zależność mój pierwotny kod działa poprawnie gdy liczba startowa jest równa, wyższa liczba powoduje wyjście o jedną pozycję poza skalę. [cpp niepoprawny kod int liczba = rand() % ( stop ) + start; [/cpp] natomiast ten kod działa jak należy. int liczba =( rand() %( stop - start ) ) + start; rozumiem że stop - start + 1 odpowiada za usunięcie 0 ( jednej liczby w dół w przedziale) tylko dlaczego ono występuje gdy zaczynam losowanie np od 10. a przy jedynce wszystko działa jak należy? Jeszcze jedno na samym początku miałem taki zapis w głównej funkcji: int wylosuj = liczba(); (funkcja wylosuj tak na początku się nazywała) to nie działało, sypało błędem, do końca nie rozumiem czemu. Polecacie jakieś trony, książki gdzie można poćwiczyć funkcje? #include <iostream> #include <cstdlib> #include <ctime> int wylosuj( int start, int stop ) { int liczba =( rand() %( stop - start ) ) + start; return liczba = rand() %( stop - start + 1 ) + start; }
int main()
{ srand( time( NULL ) ); int start; std::cout << "Podaj liczbe startowa: "; std::cin >> start; std::cout << " Podaj liczbe ostatnia: "; int stop; std::cin >> stop; std::cout << "Losowanie 20 liczb: " << std::endl; int ile = 20; do { std::cout << wylosuj( start, stop ) << std::endl; ile--; } while( ile > 0 ); return 0; }
#include <iostream> #include <cstdlib> #include <ctime> int wylosuj( int start, int stop ) { int liczba = rand() %( stop ) + start; return liczba = rand() %( stop ) + start; }
int main()
{ srand( time( NULL ) ); int start; std::cout << "Podaj liczbe startowa: "; std::cin >> start; std::cout << " Podaj liczbe ostatnia: "; int stop; std::cin >> stop; std::cout << "Losowanie 20 liczb: " << std::endl; int ile = 20; do { std::cout << wylosuj( start, stop ) << std::endl; ile--; } while( ile > 0 ); return 0; }
|
|
mateczek |
» 2016-07-24 15:20:05 wiesz jak działa dzielenie modulo "%"(reszta z dzielenia) 98/10 reszta będzie 8 . Jeśli jakąkolwiek liczbę podzielisz przez dziesięć to reszta będzie jedną z cyfr w przedziale <0...9> |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-24 15:31:08 Ok w ten sposób na to nie spojrzałem. |
|
BlackFive |
» 2016-07-25 12:41:24 Taka ciekawostka dla Ciebie funkcja wylosuj może być zapisana w ten sposób: int wylosuj( int start, int stop ) { return rand() %( stop ) + start; }
w swojej funkcji zrobiłeś masło maślane :) |
|
Gibas11 |
» 2016-07-25 16:08:31 @up Nie? |
|
BlackFive |
» 2016-07-26 00:22:38 { int liczba =( rand() %( stop - start ) ) + start; return liczba = rand() %( stop - start + 1 ) + start; }
Jak to nie? Po co przypisywać liczbę w deklaracji a następnie przy wyjściu z funkcji... rozumiem że tam się jakoś wartość będzie zmieniała... może nie znam treści zadania...? :O |
|
« 1 » |