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

question-closed Sprawdzenie, czy w tablicy struktur istnieje struktura o polu INT identycznym do wylosowanego.

Object Storage Arubacloud
0 głosów
176 wizyt
pytanie zadane 10 października 2017 w C i C++ przez orochizu Nowicjusz (150 p.)
zamknięte 17 października 2017 przez orochizu

Cześć, 
Na zajęcia ze Struktur Danych i Złożoności Obliczeniowej mamy napisać program bazujący na tablicy struktur o 3 polach (int, char, float). Jednak jest zastrzeżenie, że wartość w polu int nie może się powtarzać w żadnej ze struktur i tutaj pojawia się problem. Napisałem funkcję, która jako argumenty przyjmuje indeks elementu dla którego ma wylosować liczbę i adres do tablicy struktur. Funkcja ta dla elementu o indeksie 0 losuje liczbę bez sprawdzania innych (bo póki co nie ma co sprawdzać) a dla elementów o indeksie 1, 2 itd losuje liczbę po czym sprawdza czy ta jest równa którejś z wcześniej umieszczonych w polach int wartości i dopiero po sprawdzeniu umieszcza ją w polu lub znowu losuje jeżeli taka wartość została znaleziona. Problem w tym, że po posortowaniu tej tablicy według właśnie wartości pól int powtarzają się one (wartości pól int). Załączam napisaną przeze mnie funkcję i z góry dzięki za pomoc.

int randomNumber(int count, Structure **tab)
{
	int _number;
	srand(time(NULL));

	if (count == 0)
	{
		_number = ((rand() % 10000 + 1) - 1000);
	}
	else
	{
		for (int i = 0; i < count; i++)
		{
			_number = ((rand() % 10000 + 1) - 1000);
			if (_number == tab[i]->number)
			{
				i = -1;
				continue;
			}
		}
		return _number;
	}
}

 

komentarz zamknięcia: odpowiedź użytkownika grzybu rozwiązała problem

1 odpowiedź

0 głosów
odpowiedź 11 października 2017 przez grzybu Obywatel (1,760 p.)
wybrane 17 października 2017 przez orochizu
 
Najlepsza
srand(time(NULL)); używa się tylko w int main raz w programie nie więcej inaczej przy każdym wywołaniu funkcji generuje ci na nowo przydział losowości resetując go co sprawia że wylosowane liczby są identyczne
komentarz 11 października 2017 przez criss Mędrzec (172,590 p.)

generuje ci na nowo przydział losowości resetując go co sprawia że wylosowane liczby są identyczne

Identyczne jeśli seed by był ten sam, ale masz tam funkcje time wiec nie będzie taki sam. Poza tym się zgadzam ofc. 

komentarz 11 października 2017 przez grzybu Obywatel (1,760 p.)
no prawie identyczne bo to są ułamki sekund jak się wykonuje program ale  time(NULL) zwraca liczbę sekund od 1 stycznia 1970 roku do teraz. czyli jeśli program wykona się w 0.52s to nie ważne ile wywoła time(NULL) to ta liczb raczej się nie zmieni.

Patrząc na złożoność programu po opisie nie powinien się on wykonywać nie większym niż 1s co też świadczy o tym powstały błąd

Podobne pytania

0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez felio Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 916 wizyt
pytanie zadane 3 lipca 2018 w C i C++ przez qlucha Obywatel (1,790 p.)
0 głosów
1 odpowiedź 2,743 wizyt
pytanie zadane 24 lipca 2017 w C i C++ przez Dooky Początkujący (480 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...