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

Temat 17 zadanie

Ostatnio zmodyfikowano 2017-05-12 11:52
Autor Wiadomość
Karol98
Temat założony przez niniejszego użytkownika
Temat 17 zadanie
» 2017-05-10 18:22:17
Cześć,
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 mogę sobie poradzić z tym zadaniem.
Mój kod
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int losowanaliczba() {
    srand( time( NULL ) );
    int a =( rand() % 10 ) + 50;
    return a;
}
int main() {
    cout << "Wylosowana liczba " << losowanaliczba() << endl;
    return 0;
}

działa prawidłowo ale problem jest z wywołaniem go kilka razy. Próbuje tak ale nie może się udać.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int losowanaliczba() {
    srand( time( NULL ) );
    a =( rand() % 10 ) + 50;
    return a;
}
int main() {
    char b = 0;
    do
    {
        cout << "Wylosowana liczba " << losowanaliczba() << endl;
        b++;
    } while( b < 5 );
   
    return 0;
}
Program pokazuje 5 takich samych liczb.
Proszę o pomoc.
P-160912
wilkoo13
» 2017-05-10 19:07:12
srand niech się wykona tylko na raz na samym początku programu
P-160914
Karol98
Temat założony przez niniejszego użytkownika
Pomogło po części :)
» 2017-05-11 12:33:09
Dzięki za odpowiedź, trochę poprawione ale pojawił się nowy problem za każdym razem losuje te same liczby
Obecny kod:
C/C++
include < iostream >
#include <cstdlib>
#include <ctime>
using namespace std;
int funkcja() {
    srand( time( NULL ) );
}
int losowanaliczba() {
    int a =( rand() % 10 ) + 50;
    return a;
}
int main() {
    char b = 0;
    do
    {
        cout << "Wylosowana liczba " << losowanaliczba() << endl;
        b++;
    } while( b < 5 );
   
    return 0;
}
 
P-160938
Karol98
Temat założony przez niniejszego użytkownika
Nie wiem
» 2017-05-11 12:54:24
Poprawiłem kod i zaczął działać ale nie wiem dlaczego czy mógłby mi ktoś to wytłumaczyć.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int funkcja() {
    srand( time( NULL ) );
}
int losowanaliczba() {
    int a =( rand() % 10 ) + 50;
    return a;
}
int c = funkcja();
int main() {
    char b = 0;
    do
    {
        cout << "Wylosowana liczba " << losowanaliczba() << endl;
        b++;
    } while( b < 5 );
   
    return 0;
}
P-160939
darko202
» 2017-05-11 13:52:22
P-160941
wilkoo13
» 2017-05-11 14:11:05
srand( time( NULL ) );
niech to się wykona tylko raz na samym początku programu. Ta funkcja nie zwraca żadnej wartości. Sprawia zaś że przy każdym uruchomieniu programu liczby będa inne.

int c = funkcja();
1. Funkcja "funkcja()" nie zwraca żadnej wartości. 2. Nawet jakby zwracała wartość, to funkcja wyżej jej nie zwraca.

C/C++
int main() {
    srand( time( 0 ) );
    //reszta kodu
}

Funkcja
srand( time( 0 ) );
 tak jak wyżej. Wystarczy umieścić ją tylko raz w kodzie na samym początku wewnątrz
int main() {...}
P-160942
Karol98
Temat założony przez niniejszego użytkownika
Dziękuje :)
» 2017-05-11 15:35:13
Dziękuje bardzo za wszystkie odpowiedzi wszystko działa jak należy a kod ostatecznie wygląda tak.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int losowanaliczba() {
    int a =( rand() % 10 ) + 50;
    return a;
}
int main() {
    srand( time( NULL ) );
    char b = 0;
    do
    {
        cout << "Wylosowana liczba " << losowanaliczba() << endl;
        b++;
    } while( b < 5 );
   
    return 0;
}
P-160947
Panniikt
» 2017-05-11 18:30:09
Z góry przepraszam że nie zakładam nowego tematu ale mam problem również z tą lekcją, mianowicie z zadaniem pierwszym.

Nie wiem jaki dać argument do pętli żeby działała przy wpisywaniu znaków różnych od liczby

Oto mój kod.

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

using namespace std;

int wczytajLiczbe()
{
    do
    {
        int x;
       
       
        cin.clear();
        cin.sync();
        cin >> x;
        return x;
    } while( cin.fail() );
   
   
}

int main( int argc, char * argv[] )
{
   
   
    cout << "Podaj liczbe; " << endl;
    int liczba = wczytajLiczbe();
    cout << "podales liczbe: " << liczba << endl;
   
    system( "PAUSE" );
   
    return 0;
}
P-160952
« 1 » 2
  Strona 1 z 2 Następna strona