Dobrý den, chtěl bych se zeptat jestli je vůbec možné nějak přepsat tento zdrojový kód (ukazatele) do javy?
Předem děkuji za odpověď
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void selectSort(int n, int limit, int pole[]) {
int i = 0, j = 0, min, pom;
// projde tolik hodnot od zacatku, kolik je limit
for (i = 0; i <= limit; i++) {
// aktualni prvek oznaci jako minimalni
min = i;
// projde zbytek pole
for (j = i+1; j < n; j++) {
// pokud je prvek j mensi nez prvek min, ulozi si j do min
if (pole[j] < pole[min]) {
min = j;
}
}
// prohodi aktualni prvek s minimalnim prvkem
pom = pole[i];
pole[i] = pole[min];
pole[min] = pom;
// pokracuje o pozici dal
}
}
int main (int argc, const char * argv[])
{
int
*X = NULL, *Y = NULL, *pom = NULL, // souradnice X, Y, pom
inX, inY, // aktualni vstupy
centralX, centralY, // souradnice centraly
flag1, flag2, // navratove hodnoty scanf
n = 0, // pocet domu
m, // index prostredniho domu
length = 0, // delka kabelu
i;
printf("Zadejte souradnice domu:\n");
do {
// nacteni X
flag1 = scanf("%d", &inX);
// pokud narazi na EOF
if (flag1 == EOF) {
getchar();
// a nema jeste zadne souradnice
if (n <= 0) {
// vypise chybu
getchar();
printf("Nespravny vstup.\n");
return 1;
} else {
// pokud ma souradnice, pokracuje ke zpracovani dat
break;
}
}
// nacteni Y
flag2 = scanf("%d", &inY);
// pokud se X a Y nacetlo v poradku
if (flag1 == 1 && flag2 == 1) {
// ulozi do pole pod aktualni indexy
// odlozi do pom ukazatel na pole
pom = X;
// alokuje nove pole
X = (int *) malloc((n+1)*sizeof(int));
// zkopiruje hodnoty ze stareho pole do noveho
for (i = 0; i < n; i++) {
X[i] = pom[i];
}
// uvolni stare pole
if(n > 0) {
free(pom);
}
// prida do noveho pole novou hodnotu
X[n] = inX;
// to same znovu pro Y
pom = Y;
Y = (int *) malloc((n+1)*sizeof(int));
for (i = 0; i < n; i++) {
Y[i] = pom[i];
}
if(n > 0) {
free(pom);
}
Y[n] = inY;
// zvysi pocet nactenych domu
n++;
} else {
// pokud se neco nenacetlo spravne, vypise chybu
getchar();
printf("Nespravny vstup.\n");
return 1;
}
} while (1);
// spocita index prostredniho domu
m = (n+1)/2 -1;
// setridi pole az k prostrednimu domu
selectSort(n, m, X);
selectSort(n, m, Y);
// ulozi si souradnice centraly
centralX = X[m];
centralY = Y[m];
// projde vsechny domy a secteme X a Y vzdalenosti od centraly
for (i = 0; i < n; i++) {
length += abs(X[i] - centralX);
length += abs(Y[i] - centralY);
}
// printf("Souradnice centraly: %d %d\n", centralX, centralY);
// vypise delku kabelu
printf("Delka rozvodu: %d\n", length);
getchar();
free(X);
free(Y);
return 0;
}