Sortowanie tablicy dynamicznej

0

Witam, jestem laikiem programowania i mam pewnien problem z funkcją sortującą w swoim programie, mianowicie- znalazłem w internecie odpowiedni algorytm do sortowania i go przerobiłem, problem w tym, że każdy z nich dotyczy tablicy statycznej, nie dynamicznej. Mógłby jakiś bóg programowania pomóc mi z moim kodem? Wklejam poniżej


```void boublesort(double table[], int size)
{
	int i, j, temp;
	for (i = 0; i<size; i++)
		for (j = 0; j<size - 1; j++)
		{
			if (table[j] > table[j + 1])
			{
				temp = table[j + 1];
				table[j + 1] = table[j];
				table[j] = temp;
			}
		}
}




int main() {
	srand(time(0));
	int x;
	int n = 0;
	int i = 20;
	int j = 20;
	int k;
	printf("Podaj ilosc punktow na wykresie:");
	scanf("%d",&x);
	double *tabx = (double*)malloc(x * sizeof(double));
	boublesort(tabx, x);
	double *taby = (double*)malloc(x * sizeof(double));					//deklaracja tablic dynamicznych
	printf("\nWylosowane punkty maja wspolrzedne:\n");
	for (n = 0; n < x; n++) {
		tabx[n] = ((rand() % 10001) / 10.00) - 500.00;
		taby[n] = ((rand() % 10001) / 10.00) - 500.00;
		printf("%lf,%lf\n", tabx[n] / 10.0, taby[n] / 10.0);			//generowanie liczb od -500 do 500 i wyswietlanie ich jako od -50 do 50
	}
	if (x == 0) {
		printf("BLAD, PODAJ LICZBE CALKOWITA WIEKSZA OD ZERA");
	}
	if (x == 1) {
		printf("Twoj wykres bedzie wykresem punktowym");
		k = 1;
	}
	if (x != 1 && x != 0) {
		
		printf("Podaj typ wykresu jaki chcesz uzyskac\n1-wykres punktowy\n2-wykres liniowy\n");
		scanf("%d", &k);
	}
	graphics(1000, 1000);
	line(500, 0, 500, 1000);
	line(0, 500, 1000, 500);
	while (i < 990) {
		line(i, 504, i, 496);
		i=i + 20;
	}
	while (j < 990){
		line(504, j, 496, j);
		j = j + 20;
	}										//Rysowanie osi X i osi Y z podzialka
	outtextxy(980, 520, "X");
	outtextxy(520, 20, "Y");				//nazwanie obu osi
	outtextxy(515, 485, "2");
	outtextxy(505, 472, "2");
	line(500, 0, 495, 10);
	line(500, 0, 505, 10);					//strzalki do osi Y
	line(1000, 500, 990, 505);
	line(1000, 500, 990, 495);				//strzalki do osi X
	switch(k){
	case 1:
		for (n = 0; n < x; n++) {
			circle(500 + tabx[n], 500 - taby[n], 4);
		}
		break;
	case 2:
		for (n = 0; n+1 < x; n++) {
			line(500 + tabx[n], 500 - taby[n], 500 + tabx[n + 1], 500 - taby[n + 1]);
		}
		break;
	default:
		printf("PROSZE PODAC 1 ALBO 2");
		break;
	}
	wait();
}

PS Chodzi mi o posortowanie samego tabx
0

bubble nie bouble.

double *tabx = (double*)malloc(x * sizeof(double));
boublesort(tabx, x);

Sortujesz śmieci z pamięci.

0

Tzn? Powtarzam, jestem laikiem :D

0

Malloc przydziela Ci pewien obszar pamięci i zwraca wskaźnik do pierwszego elementu, tak samo zresztą działa normalna tablica.
Ten obszar pamięci jest wypełniony jakimiś wartościami które dla twojego programu są bezwartościowe, Ty jednak mówisz programowi aby je posortował.

Musisz najpierw zapełnić tablicę jakimiś wartościami aby je potem poukładać, widzę że u Ciebie dzieje się to w pętli for tak więc dopiero pod nią powinieneś wywołać funkcję sortującą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1