[C++] sortowanie tablicy dynamicznej


(matiit) #1

http://wklej.org/id/189507/

#include 

#include 


using namespace std;

int main()

{

	int n;

	scanf("%d", &n);

	int *xtab;

	int *ytab;

	xtab = new int[n];

	ytab = new int[n];

	for (int i=0; i
	{

		scanf("%d", &xtab[i]);

		scanf("%d", &ytab[i]);

	}

	sort(xtab[0], xtab[n-1]);

	sort(ytab[0], ytab[n-1]);

	int a; 

	int b;

	a = (xtab[n-1] - xtab[0]);

	b = (ytab[n-1] - ytab[0]);

	printf("%d", a*b);

	delete []xtab;

	delete []ytab;

}

Problem jest w użyciu funkcji sort, czyżby nie działała dla tablic dynamicznych?


([alex]) #2
sort(xtab, xtab+n); [/code]

(etam) #3

http://cplusplus.com/reference/algorithm/sort/

funkcja sort przyjmuje jako argumenty iteratory (lub w przypadku tablicy wskaźniki) dające zakres [od,do) (domknięty o dołu i otwarty od góry).

xtab[0] jest zerowym elementem tablicy.

xtab jest wskaźnikiem do zerowego elementu

xtab[n-1] jest ostatnim elementem tablicy

xtab+x jest wskaźnikiem do elementu "o jeden za końcem"

dlatego należy użyć to, co podał [alex]


([alex]) #4

Należy to zbyt mocne słowo, można tez:

sort(xtab,&xtab[n]); [/code]

lub

[code=php]sort(&xtab[0],&xtab[n]); 


(matiit) #5

Dziękuję za wyjaśnienia.