jak wyznaczyć wielkość tablicy ale nie przez sizeof

0

Witam,

Jak wyznaczyć wielkość tablicy w takiej funkcji:

int funkcja( int A[ ])
{
int rozmiar_tablicy={co tu wpisac?};
};

przyjmuje jakas tablice np. A[]={1,2,3,4}; jesli napisze w bloku funkcji sizeof(A)/sizeof(int)
to nie zadziala prawidlowo poniewaz tablica A w tej funkcji wskazuje na pierwszy indeks.

w funkcji main oczywiscie dziala bezproblemu.

Można używać tylko wyłącznie bibliotek C.

0

Musisz przekazać do funkcji rozmiar tablicy, albo zadeklarować go statycznie w deklaracji funkcji, tzn

void funkcja(int talbica[10])
// albo
void funkcja(int* tablica, int rozmiar)
0

no właśnie w tym tkwi haczyk ze nie moge tego zrobic, nie moge modyfikowac funkcji ani w wywolaniu jej nic nie zmieniac czyli w bloku main.... mam tylko ta funkcje i nic wiecej i oczywiscie argument tablica A[] do której sie przypisuje w bloku main np. A[]={1,2,4..itd}

0

To w takim wypadku możesz użyć strażnika na końcu tablicy, czyli specjalnej wartości. W przypadku inta INT_MIN jest do tego dobry, bo i tak często dużo osób w algorytmach nie bierze go pod uwagę.

0

Co prawda nie jest to idealne rozwiazanie z tym sraznikiem ale nic innego sam tez nie wymysle. Dziekuje.

0

A jakby pierwszy element tablicy był informacją o tym, ile jest przed nim?

0

hmm... a czy nie chodzi o to np jak ma się tablice "1234" to strlen(ciag)nie wyswietli dlugosci tablicy? ;]

0

strlen(A) nie zadziala; strlen dziala tylko do lancuchow np char *s="1234";

0

No ale możesz sobie napisać samemu odpowiednik tej funkcji. Właściwie wystarczy przekopiować implementację już istniejącej i zmienić tylko typ.

1 użytkowników online, w tym zalogowanych: 0, gości: 1