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

Losowanie bez powtorzen

0 głosów
203 wizyt
pytanie zadane 15 marca 2020 w C i C++ przez _Shadow_ Nowicjusz (150 p.)

Witam, program ma wylosować 5 liczb bez powtórzeń, liczby wylosowane mają być z przedziału od 1 do 10. Zdaje sobie sprawę, że podobne posty są już na forum, jednak zależy mi na zrozumieniu gdzie popełniam błąd.

Pozdrawiam

 

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

bool czyjest(int liczby[], int kandydat) {
	for (int i = 0; i < 5; i++) {
		if (liczby[i] == kandydat) return true;
		else return false;
	}
}

int main()
{
	srand(time(NULL));
	int liczby[5];
	int kandydat;
	
	liczby[0] = rand() % 10 + 1;
	
	for (int i = 1; i < 5; i++) {
		kandydat = rand() % 10 + 1;
		for (; czyjest(liczby, kandydat) != false;) {
			kandydat = rand() % 10 + 1;
			
		}
		
	}

	for (int i = 0; i < 5; i++) {
		cout << liczby[i] << endl;
	}

}

 

1 odpowiedź

0 głosów
odpowiedź 15 marca 2020 przez Marcin Siniarski Gaduła (4,420 p.)
wybrane 15 marca 2020 przez _Shadow_
 
Najlepsza

W pierwszej pętli liczba nie jest przypisywana do finałowej tablicy

for (int i = 1; i < 5; i++) {
        kandydat = rand() % 10 + 1;
        for (; czyjest(liczby, kandydat) != false;) {
            kandydat = rand() % 10 + 1;
             
        }
         
    }

Także polecał bym spojrzenie na unordered_set

komentarz 15 marca 2020 przez _Shadow_ Nowicjusz (150 p.)

Dodałem po tej pętli, ale dalej nie działa

for (int i = 1; i < 5; i++) {
		kandydat = rand() % 10 + 1;
		for (; czyjest(liczby, kandydat) != false;) {
			kandydat = rand() % 10 + 1;
			
		}
		liczby[i] = kandydat;
		
	}

 

komentarz 15 marca 2020 przez Marcin Siniarski Gaduła (4,420 p.)

Funkcja czyjest powinna wyglądać tak

bool czyjest(int liczby[], int kandydat) {
    for (int i = 0; i < 5; i++) {
        if (liczby[i] == kandydat) return true;
    }
	return false;
}
 

 

komentarz 15 marca 2020 przez _Shadow_ Nowicjusz (150 p.)
Rzeczywiście, dziękuje za pomoc!

Podobne pytania

0 głosów
2 odpowiedzi 304 wizyt
0 głosów
2 odpowiedzi 899 wizyt
pytanie zadane 11 września 2015 w C i C++ przez balti Obywatel (1,040 p.)
+1 głos
2 odpowiedzi 1,306 wizyt
pytanie zadane 1 października 2020 w JavaScript przez Nowacx02 Obywatel (1,060 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...