• 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...

VPS Starter Arubacloud
0 głosów
179 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 537 wizyt
0 głosów
0 odpowiedzi 203 wizyt
0 głosów
2 odpowiedzi 152 wizyt
pytanie zadane 26 sierpnia 2020 w Java przez T100 Obywatel (1,450 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...