Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 lis 2024, o 10:40


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 8 lut 2014, o 00:44 
Offline
Nowy

Dołączył(a): 08 lut 2014
Posty: 12
Pomógł: 0

Witam.

Znalazłem pewien program SSN w języku C i chciałbym go przełożyć na język JAVA. Mam jednak problem z pewną funkcją. Przepisany program zwraca nieprawidłowe, w stosunku do tego samego programu w C, wyniki, czemu winna jest (prawdopodobnie) wspomniana funkcja operująca na tablicach. Przed wywołaniem tej funkcji, stan określonych zmiennych w programie w C i JAVIE jest ten sam. Po wywołaniu, stan tablic na których wykonywano operacje oraz końcowy wynik różnią się, a nie powinny, bo to są identyczne programy.

Tak wygląda funkcja w języku C:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Natomiast tak wygląda ta sama funkcja przepisana na JAVĘ:

Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Funkcja (metoda) jest wywoływana tak:

[w C]

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


[w JAVIE]

Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Argumentami są stałe oraz tablice: 2 dwuwymiarowe i 3 jednowymiarowe:
*definicja tablic w C:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


*te same tablice w JAVIE:
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Myślę, że problem jest z fragmentem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, który został nieprawidłowo przetłumaczony na JAVĘ.

Czy funkcja w C została dobrze przetłumaczona na metodę w JAVIE? Gdzie znajdują się błędy?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2014, o 14:55 
Offline
Nowy

Dołączył(a): 05 paź 2013
Posty: 19
Pomógł: 0

Może nie przekazuj tych tablic jako argumenty, tylko umieść je w klasie, i operuj na klasach?

------------------------ [ Dodano po: 6 minutach ]

Z tego co się orientuję to podczas przekazywania argumentu, interpreter tworzy kopie zmiennych, więc nie operujesz na faktycznych tablicach tylko kopiach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2014, o 18:06 
Offline
Nowy

Dołączył(a): 08 lut 2014
Posty: 12
Pomógł: 0

Ale gdy są w Javie, jako argumenty funkcji, przekazywane obiekty (w tym tablice, które są też obiektami) - zmiany dokonane na tych obiektach w funkcji mają charakter globalny, bo przekazywane są do tych funkcji kopie referencji do obiektów.


Dlatego w kodzie w miejscach, gdzie były [w C] do funkcji przekazywane wskaźniki do określonych zmiennych, zastosowałem w miejsce tych zmiennych tablice jednoelementowe, aby zmiany dokonane na tych tablicach w metodach , były widoczne w innych częściach programu, np.:
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 mar 2014, o 15:37 
Offline
Użytkownik

Dołączył(a): 10 lip 2013
Posty: 93
Lokalizacja: Puławy
Pomógł: 0

Ja napisałem taki program sieci. Właściwie to jest tylko moja własna próba zaimplementowania algorytmu sieci.
Najprościej jak umiałem:
(Trochę się wstydzę pokazywać bo to niezoptymalizowane i wogóle masakra :) tylko tak na szybko sam algo)
Składnia: [ Pobierz ] [ Ukryj ]
język java
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mieszają się nazwy ang. i polskie ale nie wiedziałem jak to wszystko ponazywać.
Dawno nie uruchamiałem i w ogóle mało to obiektowe ale jak mówiłem to tylko test - powinno działać. Nie wiem jak się po polsku nazywa twoja metoda ale pewnie ją tu znajdziesz tyle że bez biasów.

P.S ale ze mnie archeolog ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO