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

Problem z wyrażeniem logicznym

Object Storage Arubacloud
0 głosów
234 wizyt
pytanie zadane 5 sierpnia 2016 w C i C++ przez avi1999 Nowicjusz (200 p.)
Mam duży problem z bardzo prostą pętlą mianowicie:

while (left < numbers.size() - 1 && numbers[++left] < numbers[pivot]);

chodzi o to że gdy left jest równe -1 to nie ważne jaka wartość zostanie podana w numbers.size() - 1 pętla zakończy się na tym wyrażeniu. Testowo ustawiłem żeby left miało wartość -1 a numbers.size() - 1 = 4 a mimo to pętla zostaje zakończona. Gdy left = 0 to pętla działa jak powinna. Próbowałem także zapisu:

while ((left < numbers.size() - 1) && numbers[++left] < numbers[pivot]);

ale wynik jest taki sam
komentarz 5 sierpnia 2016 przez avi1999 Nowicjusz (200 p.)
template<typename T>
void quicksort(std::vector<T> &numbers, int lPos, int rPos)
{
	int left = lPos - 1, right = rPos + 1;
	int pivot = numbers.size() / 2;

	while (true)
	{
		while (left < numbers.size() - 1 && numbers[++left] < numbers[pivot]);

		while (right > 0 && numbers[--right] > numbers[pivot]);

		if (left >= right)
		{
			//if (!(left - 1 - lPos < 1)) quicksort(numbers, lPos, left - 1);
			//if (!(rPos - right + 1 < 1)) quicksort(numbers, right + 1, rPos);
		}
		else
		{
			swap(numbers, left, right);
		}
	}
}

nie patrzcie na to co jest skomentowane, chodzi tylko o tą jedną pętle. I ten drugi warunek w ogóle nie jest wykonywany sprawdziłem w debugerze oraz zmienna left nie jest inkrementowana

komentarz 5 sierpnia 2016 przez Szahid Pasjonat (20,930 p.)
Mam problem ze zrozumieniem tego co napisałeś. Najpierw napisałeś że jak left =-1 to ma się przerwać a potem że jak ustawiasz testowo left na -1 to pętlą się przerywa Więc w czym problem

1 odpowiedź

+1 głos
odpowiedź 5 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
Pokaż cały kod, zapewne druga część warunku się nie spełnia.

Podobne pytania

0 głosów
1 odpowiedź 730 wizyt
0 głosów
4 odpowiedzi 823 wizyt
0 głosów
1 odpowiedź 204 wizyt
pytanie zadane 15 kwietnia 2017 w Matematyka, fizyka, logika przez Serpentes Nowicjusz (120 p.)

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

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

...