Lekcja 17, ostatnie zadanie
Ostatnio zmodyfikowano 2012-05-06 10:29
MeehoweCK Temat założony przez niniejszego użytkownika |
Lekcja 17, ostatnie zadanie » 2012-04-02 15:05:37 Mam pytanie: czy w tym zadaniu mogę modyfikować tekst tylko w ramach funkcji wylosuj() (tam gdzie jest komentarz ) czy dalej też? I przy okazji, czy zadanie przedostatnie zrobiłem dobrze czy nie o to chodziło? #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int losowanie() { srand( time( NULL ) ); int los = rand() % 11 + 50; return los; }
int wybieranie() { int liczba; bool blad = false; do { cout << "Wpisz 1, aby wylosowac liczbe lub 0, aby wyjsc z programu: "; cin.clear(); cin.sync(); cin >> liczba; blad = cin.fail(); if(( liczba != 0 ) &&( liczba != 1 ) ) blad = true; } while( blad == true ); return liczba; }
int main() { int wybor, los; do { wybor = wybieranie(); if( wybor == 1 ) { los = losowanie(); cout << los << endl; } } while( wybor == 1 ); cout << endl << "Koniec"; return 0; }
|
|
MeehoweCK Temat założony przez niniejszego użytkownika |
» 2012-04-03 01:31:40 Odświeżam temat. Napisałem następujący kod: #include <iostream> #include <cstdlib> #include <ctime>
int wylosuj( int start, int stop ) { srand( time( NULL ) ); int los = rand() %( stop - start + 1 ) + start; return los; }
int main() { srand( time( NULL ) ); int smth; int start; std::cout << "Wpisz liczbe mniejsza: "; std::cin >> start; int stop; std::cout << "Wpisz liczbe wieksza: "; std::cin >> stop; int ile = 20; do { std::cout << "Wpisz 1, aby wywolac nastepna liczbe losowa: "; std::cin >> smth; std::cout << wylosuj( start, stop ) << std::endl; ile--; } while(( ile > 0 ) &&( smth == 1 ) ); return 0; }
Gdy pozostawiałem oryginalny kod, losowało się naraz 20 liczb, przez co były one takie same. Teraz użytkownik przywołuje każdą następną wciśnięciem jedynki i liczby są losowane dobrze. Tylko czy to jest poprawnie rozwiązane zadanie? |
|
GoldWolf |
» 2012-04-03 07:41:48 Program działa tak jak opisane jest to w zadaniu. Jeśli chcesz dodatkowe zadanie, to zrób tak, by jeśli PIERWSZA podana liczba jest większa od DRUGIEJ, to program będzie to sygnalizował i nie wykonywał działania losowania na liczbach. A tak po za tym, wszystko działa dobrze. |
|
GoldWolf |
» 2012-04-03 07:41:48 <do usunięcia> |
|
GoldWolf |
» 2012-04-03 07:41:49 <do usunięcia> |
|
Robson |
» 2012-05-06 10:29:41 A po co tyle zachodu? Miałeś napisać funkcję, która będzie losowała liczby z przedziału określonego argumentami i sprawdzić czy działa jak trzeba poprzez kod podany w zadaniu. Wystarczyło tu tylko zrobić coś takiego: #include <iostream> #include <cstdlib> #include <ctime>
int wylosuj( int start, int stop ) { int wylosowanaliczba =( rand() %( stop - start + 1 ) ) + start; return wylosowanaliczba; }
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; } # Wiem, że archeolog jestem, ale może się przyda "przyszłym pokoleniom" ;d |
|
« 1 » |