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

Lekcja 16 zadanie domowe

Ostatnio zmodyfikowano 2013-07-09 18:08
Autor Wiadomość
darius
Temat założony przez niniejszego użytkownika
Lekcja 16 zadanie domowe
» 2013-07-09 16:46:07
Witam
Mam problem w następnej lekcji 16.
Treść zadania:
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.

Nie wiem czy dobrze nawet zadania zrobiłem.
Proszę o pomoc. :)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int losowanie()
{
    srand( time( NULL ) );
    int liczba =( rand() % 60 ) + 50;
}

int main()
{
    int wynik = losowanie();
    cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl;
    return 0;
}
P-87319
Berux
» 2013-07-09 16:55:00
1)
srand( time( NULL ) );
 umieszczamy w programie 1 raz, w funkcji głównej.
2)
int liczba =( rand() % 60 ) + 50;
 Ten kawałek kodu losuje liczbę, która znajduje się w przedziale od 50 do 109 (losuje do 60-tej liczby zaczynając od 50(trochę to słabo wytłumaczyłem :D)).

Jeśli jeszcze coś zauważę, to dopiszę ;)
P-87321
darius
Temat założony przez niniejszego użytkownika
» 2013-07-09 17:00:04
Ok czyli jak narazie mój kod wygląda mniej więcej tak:

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

using namespace std;

int losowanie()
{
    int liczba =( rand() % 60 ) + 50;
}

int main()
{
    srand( time( NULL ) );
    int wynik = losowanie();
    cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl;
    return 0;
}
Jak poprawić u mnie kod z losowaniem? tzn. z przedziałem. Jak to poprawić?
P-87322
Berux
» 2013-07-09 17:06:16
Skoro masz losować liczby z przedziału od 50 do 60 włącznie, musisz losować do 11-tej liczby zaczynając od 50 (50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 (razem 11 liczb)). Myślę, że sobie poradzisz :)
P-87323
darius
Temat założony przez niniejszego użytkownika
» 2013-07-09 17:17:16
Ok teraz kod wygląda tak:

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

using namespace std;

int losowanie()
{
    int liczba =( rand() % 11 ) + 50;
}

int main()
{
    srand( time( NULL ) );
    int wynik = losowanie();
    cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl;
    return 0;
}
I działa :)
Dzięki wielkie :)

Teraz mam kolejny problem z kolejnym zadaniem z tej lekcji.
Napisz funkcję, która losuje liczbę z przedziału, który zostanie podany poprzez argumenty funkcji. Przetestuj funkcję w poniższy sposób:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
//... tu Twój kod
int main()
{
    srand( time( NULL ) );
    int start;
    std::cin >> start;
    int stop;
    std::cin >> stop;
    int ile = 20;
    do
    {
        std::cout << wylosuj( start, stop ) << std::endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}

I mój kod jak narazie wygląda tak:
I mam niezłe problemy z nim :(

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int wylosuj( int a, int b )
{
    srand( time( NULL ) );
    int losuj =( rand() % a ) + b;
}
int main()
{
    srand( time( NULL ) );
    cout << "Wpisz liczbe a: " << endl;
    int start;
    cin >> start;
    cout << "Wpisz liczbe b: " << endl;
    int stop;
    cin >> stop;
    int ile = 20;
    do
    {
        cout << wylosuj()( start, stop ) << endl;
        ile--;
    } while( ile > 0 );
   
    return 0;
}
P-87326
Berux
» 2013-07-09 17:25:29
Spójrz na inne tematy, w których użytkownicy mają problem z tym samym zadaniem. Wpisz w wyszukiwarkę na stronie np.: "zadanie z lekcji 16", lub po prostu: "lekcja 16". Poszukaj i porównaj swój kod z innymi. Jak czegoś nie będziesz rozumiał - zapytaj się o to.
P-87330
pekfos
» 2013-07-09 18:08:28
srand(time(NULL)) powinno być wywołane raz, a wywołanie funkcji wylosuj() jest nieprawidłowe. Przedział dalej źle określony..
» Kurs C++ » Poziom 2Pseudolosowe liczby całkowite lekcja
Najlepiej przeczytaj od nowa, a potem kontynuuj pisanie programu..
P-87338
« 1 »
  Strona 1 z 1