• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed pseudolosowosc

Aruba Cloud - Virtual Private Server VPS
0 głosów
496 wizyt
pytanie zadane 21 stycznia 2017 w C i C++ przez bartekgrzywnowicz Nowicjusz (170 p.)
zamknięte 21 stycznia 2017 przez bartekgrzywnowicz
#include <iostream>
#include<ctime>
#include <cstdlib>
using namespace std;

int losowanie()
 {

  return (( rand() %3 ) + 60);

 }
 int main()
 {
 srand(time(NULL));
     cout<< losowanie()<<endl;
int a;
a= losowanie();

if(a==61)
{
    cout<<"SUPER!";
}
else cout<<"slabo";
     return 0;
 }

 

 

Troche poznaje pseudolosowosc i funkje.
Moje pytanie brzmi.
1.Dlaczego po wylosowaniu liczby (przez funkcje) zapisany wynik do 'a' a pozniej przyrownany w if'ie do wartosci 61, wyswietla raz "super", raz "słabo"?  tak tez jest np gdy wylosuje sie liczba 60  - raz dobrze pokazuje sie instrukcja else a raz if.  co jest zle?
Pozdrawiam.

komentarz zamknięcia: Zrozumialem błąd.

2 odpowiedzi

+2 głosów
odpowiedź 21 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
cout<< losowanie()<<endl;
int a;
a= losowanie();

Losujesz liczbę 2 razy.

komentarz 21 stycznia 2017 przez mbabane Szeryf (79,260 p.)

Dokładnie i to co masz wyświetlone na ekranie nie jest tym samym co jest pod zmienną a, dlatego też mimo że na ekranie pokazuje Ci np. 61 to w ifie jest cos innego.

Zrób to tak:

int a;
a = losownaie();
cout<<"Wylosowana liczba:"<<a<<endl;

if...
komentarz 21 stycznia 2017 przez bartekgrzywnowicz Nowicjusz (170 p.)
OK. rozumiem już.
DZIEKUJE.
Pozdrawiam
0 głosów
odpowiedź 21 stycznia 2017 przez CzikaCarry Szeryf (75,340 p.)
Wyświetla raz 'super', a raz 'slabo' bo przy każdym wywołaniu funkcji liczba jest losowana od nowa.
komentarz 21 stycznia 2017 przez bartekgrzywnowicz Nowicjusz (170 p.)
No tak, ale zawsze wylosowana liczba powinna byc przyrównywana do tego co w if'ie czyli czy wylosowana liczba jest równa 61 - jesli tak wyswietl "super",   w przeciwnym razie wyswietl "slabo".
Więc nie rozumiem, to ze jest losowana od nowa przy kazdym uruchumieniu  programu to sie zgodze ale zakazdym razem jest zapisywana do zmienej 'a', ktora za kazdym razem na nowo powinna byc przyrownywana, wiec nie rozumiem? moze jakos prosciej sie uda wytlumaczyc?
komentarz 21 stycznia 2017 przez DragonCoder Nałogowiec (36,500 p.)
A w ifie masz jezeli liczba jest rowna 61 to wyswietl super, w innym przypadku (kazdym innym) slabo... Wiec czego oczekujesz?

 

Zamykasz program, zmienna ktora jest w a, znika, utworz plik, ktory bedzie pobieral liczby a i je porownywal to otrzymasz chyba Twoj upragniony efekt, jezeli sobrze rozumiem....

Podobne pytania

+2 głosów
1 odpowiedź 555 wizyt
+2 głosów
1 odpowiedź 365 wizyt
pytanie zadane 1 listopada 2017 w C i C++ przez k3ybo4rd Obywatel (1,180 p.)
0 głosów
1 odpowiedź 331 wizyt
pytanie zadane 15 października 2017 w Java przez Dawidos01111 Nowicjusz (160 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...