Přepsání C do Javy – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přepsání C do Javy – Java – Fórum – Programujte.comPřepsání C do Javy – Java – Fórum – Programujte.com

 

Neony
~ Anonymní uživatel
6 příspěvků
25. 11. 2011   #1
-
0
-

 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;
    
}
Nahlásit jako SPAM
IP: 85.70.223.–
liborb
~ Redaktor
+18
Guru
25. 11. 2011   #2
-
0
-

Ano lze. Jsou to normální pole, jen se k nim přistupuje i pomocí pointerů, což jednoduše nahradíš.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 35 hostů

Podobná vlákna

Použití Javy? — založil vesík

Použitelnost Javy? — založil Algon Janer

Cvičení z Javy — založil Michal

Projekt z Javy — založil neo225

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý