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

Lekcja 17, ostatnie zadanie

Ostatnio zmodyfikowano 2012-05-06 10:29
Autor Wiadomość
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
C/C++
//... tu Twój kod
)
czy dalej też?

I przy okazji, czy zadanie przedostatnie zrobiłem dobrze czy nie o to chodziło?
C/C++
#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;
}
P-53723
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:
C/C++
#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?
P-53764
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.
P-53765
GoldWolf
» 2012-04-03 07:41:48
<do usunięcia>
P-53766
GoldWolf
» 2012-04-03 07:41:49
<do usunięcia>
P-53767
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:

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

int wylosuj( int start, int stop )
{
    int wylosowanaliczba =( rand() %( stop - start + 1 ) ) + start;
    return wylosowanaliczba;
}
// W zadaniu chodzilo o napisanie takiej funkcji. To co jest dalej powinno zostac bez zmian.
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
P-56091
« 1 »
  Strona 1 z 1