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



Teraz jest 7 kwi 2026, o 21:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 31 paź 2016, o 19:44 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Witam,
napotkałem pewien problem odnośnie adresowania elementów tablic wielowymiarowych:
Dajmy na to, że jest tablica dwu wymiarowa, mająca po 8 elementów, czyli tab[8][8].
wskaźnik na pierwszy element tablicy to po prostu "tab", a teraz
jak odnieść się do np:
a) tab[0][1] = ?
b) tab[1][0] = ?
c) tab[1][1] = ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2016, o 20:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

chyba,
a) *(*(tab+0)+1) =?
b) *(*(tab+1)+0)=?
c) *(*(tab+1)+1)=?
ale nie dam nic sobie obciąć. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2016, o 20:45 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

a nie da się tego wyrazić jako "tab + x" ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 paź 2016, o 21:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Jatsekku napisał(a):
jak odnieść się do np:
a) tab[0][1] = ?
b) tab[1][0] = ?
c) tab[1][1] = ?


no i się odniosłeś - więc w czym problem - tak można ...

Daro69 napisał(a):
chyba,
a) *(*(tab+0)+1) =?
b) *(*(tab+1)+0)=?
c) *(*(tab+1)+1)=?

A dlaczego chyba? ... tak po prostu też można - to jest metoda wskaźnikowa

Jatsekku napisał(a):
a nie da się tego wyrazić jako "tab + x" ?

Polecam ci zacząć nie "od tyłu" tylko "od przodu" ... a więc napisać co chcesz zrealizować i dlaczego się upierasz na tablicę wielowymiarową ... pytam dlatego, że w większości przypadków nie ma potrzeby używania tablic wielowymiarowych jeśli się wszystko dobrze przemyśli - ale oczywiście jeśli już trzeba - no to właśnie sam podałeś jeden sposób za pomocą indeksów liczbowych do każdego z wymiarów zaś kolega pokazał ci jak to się robi za pomocą wskaźników

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2016, o 08:41 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Cytuj:
a nie da się tego wyrazić jako "tab + x" ?

oczywiście, że się da tylko dla tablicy dwuwymiarowej z dwoma dodatkowymi zmiennymi np. x i y:
*(*(tab + x) + y)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lis 2016, o 09:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 cze 2016
Posty: 247
Lokalizacja: Rybnik
Pomógł: 13

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

_________________
Situs != Situs



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 00:51 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Opierając się na waszych wskazówkach, udało mi się to doprowadzić do ładu. Finalnie okazało się, że nie muszę obliczać tego w taki sposób :) Skoro dwuwymiarowa tablica jest tak naprawdę tablicą jednowymiarową wskaźników do drugiej tablicy jednowymiarowej (o ile dobrze rozumiem, ale skoro działa to chyba nie może być inaczej) to zrealizowałem funkcję, która bierze jako argument tablicę z pierwszą współrzędną, tj tab[x]
Dla ciekawskich, potrzebne mi to było do biblioteki 1Wire, gdzie adresy ROM zapisuje własnie w postaci tablicy dwuwymiarowej, gdzie tab [indeks do danego adresu rom] [indeks do bajtu adresu]. Jako iż operacje najwygodniej realizować właśnie w oparciu o zmienne 8-mio bitowe, ten sposób wydawał mi się najlepszym, bo zapewnia dobrą czytelność kodu :)
Nie taki łatwy ten 1-Wire jakby się na początku zdawało...
Dziękuję wszystkim za pomoc! Problem rozwiązany :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 07:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Ja tak trochę offtopowo :)
@jatsekku widzę, że opracowujesz sprawdzanie romcode na magistrali 1-Wire :)
Wczoraj byłem dokładnie na tym etapie też działam na tablicy 2 wymiarowej :)
Dzięki takiemu rozwiązaniu łatwiej jest szukać romcody w tablicy :)

Powodzenia w dalszej części sprawdzania i porównania romcode :)

Wysłane z mojego LIVE przy użyciu Tapatalka

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2016, o 21:08 
Offline
Użytkownik

Dołączył(a): 10 kwi 2014
Posty: 61
Pomógł: 0

Dziękuje bardzo :)
W sumie to wszystko mi już działa, muszę jeszcze to tylko ładnie poopisywać i zrobić z tego porządną bibliotekę. Możemy się później wymienić kodami źródłowymi, żeby sobie przeanalizować różne podejścia i powybierać od drugiego co lepsze "kąski" :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2016, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Nie widze problemu. Ja dzis bede zasiadal do kodu i klikal dalej. Chcialbym dzis go ukonczyc :)

Wysłane z mojego LIVE przy użyciu Tapatalka

_________________
Usługi druku przestrzennego - www.drumik.pl



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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