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

Lekcja 2.17 nr 4

Ostatnio zmodyfikowano 2016-07-26 00:22
Autor Wiadomość
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?



C/C++
#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;
}


C/C++
#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;
}
P-150220
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>
P-150221
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.
P-150222
BlackFive
» 2016-07-25 12:41:24
Taka ciekawostka dla Ciebie funkcja wylosuj może być zapisana w ten sposób:

C/C++
int wylosuj( int start, int stop )
{
    return rand() %( stop ) + start;
}

w swojej funkcji zrobiłeś masło maślane :)
P-150240
Gibas11
» 2016-07-25 16:08:31
@up Nie?
P-150251
BlackFive
» 2016-07-26 00:22:38
C/C++
{
    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
P-150256
« 1 »
  Strona 1 z 1