Skocz do zawartości

Tablice - pobieranie ostatnio używanego indeksu ?


ampers

Pomocna odpowiedź

Witam mam problem pozornie błahy ale nie daje sobie rady.

Potrzebuje na postawie poglądowego kodu pobrać ostatnio używany indeks z tablicy i w zależności od wykonanej pętli przesunąć się po indeksach tablicy w lewo bądź w prawo i wyświetlić nową zawartość komórki. Ktoś ma pomysł ?

int tab[5] = {1, 2, 3, 4, 5}; 
void setup() {
Serial.begin(9600);
}
void loop()
{
  if(liczba>10)
  {Serial.print(tab[2]);}
  if(liczba<10)
  {Serial.print(tab[4]);}
  .
  .
  .
  .
if(liczba2>1)
  {tab[]++} // jak okreslić która zawartosć tab[2] czy tab[4] została ostatnio pobrana ??
  //wyświetl tab[3] jeżeli było wczesniej tab[2]. Jak przechować inforamcje o tab[2] by móc pozniej z niej skorzystać ?
if(liczba2<1)
  {tab[]--}

 

Edytowano przez ampers
Link do komentarza
Share on other sites

Tablice z reguły wygodnie jest indeksować zmiennymi, a nie stałymi wartościami czyli zamiast tablica[2] wygodniej tablica[indeks]  gdzie indeks to oczywiście zmienna o odpowiedniej wartości.

Edytowano przez Belferek
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

Próbuje i próbuje i nic nie wychodzi 😕 podrzucicie jakiś przykład bo mam problem z zrozumiem zagadnienia albo coś co mnie naprowadzi. 

Poczyniłem pewne postępy poprzez wskaźnik:

int tab[5] = {1, 2, 39, 4, 5}; 
int *indeks = tab; 

*indeks++

Edytowano przez ampers
Link do komentarza
Share on other sites

34 minuty temu, ampers napisał:

int tab[5] = {1, 2, 39, 4, 5}; 
int *indeks = tab; 

*indeks++

int tab[5] = {1, 2, 39, 4, 5}; 
int index = 0; 

index++;
int value = tab[index]; // index >= 0; index < 5 {sizeof(tab)/sizeof(tab[0])}

 

  • Lubię! 1
Link do komentarza
Share on other sites

W Arduino Reference znajdziesz artykuł o tablicach - zobacz.

Poza tym @Gieneq poświęcił cały artykuł na tym forum dot. tablic - zobacz.

Przykładowo jeśli chciałbyś znaleźć w tablicy element o wartości 2 i zapamiętać indeks pod którym ta wartość jest dostępna w tej tablicy:

#define SIZE 5
int tab[SIZE] = {1, 2, 39, 4, 5}; 
int last_index = -1;
for(int i=0; i<SIZE; i++)	//będziemy przeglądać całą tablicę
{
  if(tab[i]==2) 
  { 
    last_index=i;	//zapamiętaj indeks pod którym znaleziono wartość 2
    break;			//przerywamy petle for bo juz dalej nie musimy szukac
  }
}

if(last_index==-1) Serial.println("Nie znaleziono w tablicy elementu o wartosci 2");
else 
{
  Serial.print("Element o wartosci 2 znaleziono w tablicy pod indeksem "); 
  Serial.println(last_index);
}

 

Edytowano przez Belferek
  • Lubię! 2
Link do komentarza
Share on other sites

Jeszcze wracając do Twojego pierwszego przykładu

  ...
  if (liczba > 10)  {    indeks = 2;  }
  else if (liczba < 10)  {    indeks = 4;  }
  else /* (liczba == 10 ;} */  {  /* tego przypadku nie opisałeś */  }
  Serial.print(tab[indeks]);
  // W tym miejscu zmienna 'indeks' zawiera nr wyświetlonej komórki
  ...

 

Edytowano przez bjrk
palcówka w kodzie
  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.