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

Algorytm Hoare'a - błąd

VPS Starter Arubacloud
0 głosów
1,084 wizyt
pytanie zadane 8 maja 2018 w C i C++ przez Jakub Olszak Użytkownik (540 p.)

Witam, muszę napisać algorytm Hoare'a w C++ oraz algorytm magicznych piątek. Rozumiem zamysł tego działania jednak męczę się cały czas z pewnym błędem. Mógłby ktoś naprowadzić mnie na rozwiązanie tego problemu?

Kod:

#include <iostream>
#include <conio.h>

using namespace std;

int hoare(int t[], int m, int n, int k)
{
	if (n == 0 && k == 0) {
		return t[0];
	}

	int x, y, r;

	x = m;
	y = n;

	r = t[0];

	do {
		while (t[x] < r) {
			x++;
		}
		while (r < t[y]) {
			y--;
		}
		if (x <= y) {
			x++;
			y--;
		}
	} while (x <= y);

	

	if (x < k) {
		return hoare(t,0,x,k);
	}
	else {
		return hoare(t, x, y, k);
	}

}


int main() {

	int tab[10] = { 7,2,4,3,6,8,1,5,9,0 };

	cout << hoare(tab, 0, 9, 3);


	_getch();
	return 0;
}

Kod błędu:

Nieobsłużony wyjątek w lokalizacji 0x01051819 w algorytm hoare'a.exe: 0xC00000FD: Stack overflow (parametry: 0x00000001, 0x00682FEC).: wystąpił wyjątek 

1 odpowiedź

+2 głosów
odpowiedź 8 maja 2018 przez j23 Mędrzec (194,920 p.)
wybrane 9 maja 2018 przez Jakub Olszak
 
Najlepsza

Bez wnikania w algorytm. Jednym z warunków kończących rekurencję jest konieczność k == 0. Problem w tym, że u Ciebie k jest zawsze równe 3 (to znaczy to dobrze, ale przy tak skonstruowanym warunku, wszystko z k != 0 będzie powodować przepełnienie stosu).

komentarz 9 maja 2018 przez Jakub Olszak Użytkownik (540 p.)
Faktycznie, dzięki wielkie!

Podobne pytania

0 głosów
0 odpowiedzi 452 wizyt
pytanie zadane 5 listopada 2021 w Algorytmy przez Beginner555 Obywatel (1,760 p.)
0 głosów
4 odpowiedzi 311 wizyt
0 głosów
0 odpowiedzi 776 wizyt

92,452 zapytań

141,262 odpowiedzi

319,077 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!

...