wartość indeksu tablicy

wartość indeksu tablicy
  • Rejestracja: dni
  • Ostatnio: dni
0

Potrzebuje dostać się do numeru indeksu tablicy, to znaczy mam np. tablica[6] i chcę otrzymać liczbę 6
istnieje jakaś metoda która mi to umożliwi?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

tablica.length

Shadoow
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 42
0

Jeśli jest typu int i składa się z 6 elementów możesz spróbować tak :

Kopiuj
#include <iostream>
using namespace std;
int main()
{
    int tablica[6];
    cout << (sizeof(tablica) / (sizeof(int)));

    return 0;
}

sizeof(tablica) - zwraca 24
sizeof(int) - zwraca 4

MU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Wrocław
  • Postów: 26
0

Ale tablica[6] nie musi mieć wartości 6 :D

  • Rejestracja: dni
  • Ostatnio: dni
0
bogdans napisał(a):

tablica.length

nie o to mi chodzi
mam np.
int[] x = new int[3];
tab[0]=1;
tab[1]=1;
tab[2]=1;
int z = tab[2].zwróćIndeksTablicy(); //z=2

chodzi mi o tę metodę zwróćIndeksTablicy() czy istnieje taka metoda?

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Opisz problem dokładniej. Który indeks ta metoda ma zwrócić?

  • Rejestracja: dni
  • Ostatnio: dni
0

tab[2].zwróćIndeksTablicy() ma zwrócić liczbe 2 czyli numer indeksu tab[2]
tab[78].zwróćIndeksTablicy() ma zwrócić liczbe 78 czyli numer indeksu tab[78]

wartości tab[2] czy tez tab[78] mnie kompletnie nie interesują, rozmiar całej tablicy też nie.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Nadal nie rozumiem. Chodzi o coś takiego

Kopiuj
tab.getIndex(value)

ma zwrócić indeks ind (pierwszy, ostatni, losowy) taki, że tab[ind] = value?

  • Rejestracja: dni
  • Ostatnio: dni
0
bogdans napisał(a):

Nadal nie rozumiem. Chodzi o coś takiego

Kopiuj
tab.getIndex(value)

ma zwrócić indeks ind (pierwszy, ostatni, losowy) taki, że tab[ind] = value?

ciężko mi lepiej zobrazować co mam na myśli, mam wrażenie ze ująłem juz to wystarczająco jasno i szweszwe też ujął to jasno, ale spróbuje jeszcze tak. Wyobraźmy sobie tak dialog

[Ja] - hej bogdans czy mógłbyś powiedzieć mi jaki NUMER INDEKSU ma ta zmienna tab[127]?
[bogdans] - Numer indeksu tab[127] to oczywiście 127
[Ja]- a numer indeksu tab[51554] ?
[bogdans] - to 51554, chciałbyś możę wiedzieć coś o wartościach jakie znajdują się pod tymi zmiennymi?
[Ja]- Nie wartości zawarte pod tab[127] oraz tab[51554] mnie nie interesują. Już wszystko mi powiedziałeś. Dzięki!

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeśli Ty ująłeś jasno i @szweszwe ujął jasno, to niech Ci @szweszwe odpowie. Ja nie mam pojęcia o co Ci chodzi.
Mógłbyś chociaż odpowiedzieć na moje pytanie z poprzedniego postu.

  • Rejestracja: dni
  • Ostatnio: dni
0

nie chodzi mi o to aby zwracał mi numery indeksów w których wartość to X

mająć tab[63].zwróćIndeksTejZmiennej(); zwróci mi liczbe jest pomiędzy "tab[ " a " ]" czyli 63
mając wyrażenie

System.out.println( tab[63].zwróćIndeksTejZmiennej(); );
w konsoli wypisze mi " 63"

System.out.println( tab[120].zwróćIndeksTejZmiennej(); );
w konsoli wypisze mi " 120"

  • Rejestracja: dni
  • Ostatnio: dni
0

"Ogólnie dla tab[i] chodzi mu o wartość i. - szweszwe 8 minut temu"

dokładnie

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
0

Po pierwsze, tab[63] może być typu prostego, np. int i nie można na rzecz tab[63] wywołać żadnej metody.
Po drugie, jeśli nawet tab[63] jest obiektem, to ten obiekt nie wie czy siedzi w jakichś tablicach, a jeśli siedzi, to jaki ma indeks.
Może Tobie chodzi o to by ze Stringu "tab[63]" wyciąć to co jest między nawiasami kwadratowymi.

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

Nie bardzo wiem w jakim celu chcesz dostać indeks tablicy skoro ten indeks tam sam podajesz.
Zawsze możesz przypisać go do jakiejś zmiennej
int i = 2;
wtedy index tab[i] wynosi i
Ewentualnie, tak jak ktoś podał link, ale to działa tylko dla tablicy gdzie każda wartość jest unikalna.

Kopiuj
(Arrays.asList(tab)).indexOf(tab[5]);

Z tym, że dla

Kopiuj
Integer[] tab = {1, 2, 3, 4, 5, 3};

(gdzie 3 występuje 2 razy) dla tab[5] dostaniesz 2 zamiast 5.
Przede wszystkim powiedz co próbujesz osiągnąć bo wszystko wskazuje na to, że zabierasz się do problemu od złej strony.

  • Rejestracja: dni
  • Ostatnio: dni
0

"Może Tobie chodzi o to by ze Stringu "tab[63]" wyciąć to co jest między nawiasami kwadratowymi."
z tym bym sobie poradził

"Po pierwsze, tab[63] może być typu prostego, np. int i nie można na rzecz tab[63] wywołać żadnej metody.
Po drugie, jeśli nawet tab[63] jest obiektem, to ten obiekt nie wie czy siedzi w jakichś tablicach, a jeśli siedzi, to jaki ma indeks."

to chyba mi wyjaśniło wszystko. Po prostu nie da się tego wykonać

Maciej Cąderek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1264
0

Pomijając cały bezsens pytania, nie wiem jak w Javie, ale ogólnie da się taka bzdurę zrobić, nawet bez tworzenia nowej tablicy obektów z tablicy bazowej, przykład w JS:

Kopiuj
function nonsenseArrayProxy(arr) {
  return new Proxy(arr, {
    get(target, property) {
      if (property === 'raw') {
        return target;
      }
      return {
        index: Number(property),
        value: target[property]
      }
    }
  });
}

/* usage */
const arr = nonsenseArrayProxy(['foo', 'bar', 'baz']);

// get index:
console.log(arr[1].index); // => 1

// get value (two options):
console.log(arr[1].value); // => 'bar'
console.log(arr.raw[1]); // => 'bar'

// for loops use raw array:
arr.raw.forEach(element => console.log(element));

Powtarzam - nie ma to żadnego zastosowania, ot gimnastyka przed poniedziałkiem ;)

  • Rejestracja: dni
  • Ostatnio: dni
0

@Maciej Cąderek masz racje, do niczego nie było mi to potrzebne po prostu złe popatrzyłem na problem a jako że mam tendencje do komplikowania rzeczy to powstał ten wątek :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.