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

Funkcja nie zwraca żadnej losowej wartości...

Object Storage Arubacloud
0 głosów
183 wizyt
pytanie zadane 15 maja 2018 w C i C++ przez Q7V Gaduła (4,250 p.)

Cześć, mam prostą funkcję w c++, jednak przywołana ona w main() nie wyświetla nic. Teoretycznie powinna wyświetlić parę losowych liczb aż nie spełni warunku, który statystycznie nie jest tak łatwo spełnić...

      void for3(){
      srand(time(NULL));
    int max=100;
     int min=0;
      int cz=0;
      for(cz=rand()%(max-min+1)+min;cz%5==0;)
      {
      cout<<cz<<endl;
      }
      }

 

2 odpowiedzi

+1 głos
odpowiedź 15 maja 2018 przez Huberti Gaduła (4,500 p.)
wybrane 25 maja 2018 przez Q7V
 
Najlepsza

Witaj, Twój kod:

    int max = 100;
    int min = 0;
    int cz = 0;
    for (cz = rand() % (max - min + 1) + min; cz % 5 == 0;)
    {
        cout << cz << endl;
    }

To tak naprawdę poniższa pętla:

	for (int i = rand() % 101; i % 5 == 0;)
		cout << i << endl;

Losujesz liczbę z przedziału od 0 do 100. Jeżeli wylosowana liczba dzieli się przez 5, to pokazujesz ją w nieskończoność. Natomiast w przypadku wylosowania liczby niepodzielnej przez 5 nic nie robisz.

Wywołana funkcja powinna wylosować parę liczb dopóki nie będzie ona podzielna przez 5.

Powinieneś więc napisać następująco:

	for (int i = rand() % 101; i % 5 != 0; i = rand() % 101)
		cout << i << endl;

Większą czytelność możesz uzyskać poprzez zastosowanie pętli while. Przepisałem dla Ciebie całą funkcję poniżej:

void for3()
{
	srand(time(NULL));
	int max = 100;
	int min = 0;
	int cz = rand() % (max - min + 1) + min;

	while (cz % 5)
	{
		cout << cz << endl;
		cz = rand() % (max - min + 1) + min;
	}
}

PS 

Zapis:

while (cz % 5)

To to samo co:

while (cz % 5 != 0)
+2 głosów
odpowiedź 15 maja 2018 przez j23 Mędrzec (194,920 p.)

powinna wyświetlić parę losowych liczb

Parę? A gdzie w kodzie masz tę parę losowań do wyświetlenia? Ja tam widzę jedno losowanie i warunkowe wyświetlanie wylosowanej wartości w nieskończoność. Poczytaj gdzieś o pętli for.

 

Kod formatowałeś po pijaku?

komentarz 15 maja 2018 przez Q7V Gaduła (4,250 p.)
To wycinek większego projektu po prostu wywołana funkcja powinna wylosować parę liczb dopóki nie będzie ona podzielna przez 5.
komentarz 15 maja 2018 przez j23 Mędrzec (194,920 p.)

Wiem, co chcesz zrobić. W poprzednim wpisie zasugerowałem Ci, że masz źle napisaną pętlę, co miało Cię skłonić do dokładniejszego przeanalizowania jej. Zrobiłeś to? Dowiedziałeś się jak działa pętla for?

Podobne pytania

0 głosów
2 odpowiedzi 563 wizyt
0 głosów
0 odpowiedzi 205 wizyt
0 głosów
2 odpowiedzi 159 wizyt
pytanie zadane 26 sierpnia 2020 w Java przez T100 Obywatel (1,450 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...