Hm. Erdekes cim...
>Irjon eljarast, amely parameterkent megkap egy azonos hosszusagu sztringeket
>tartalmazo, tetszoleges meretu egydimenzios tombot, tovabba egy karaktert es
>egy pozitiv egesz szamot, es a kepernyore irja azokat a tombelemeket,
>amelyekben a karakter pontosan az adott szamszir fordul elo.
>
>Tehat az eljarasnak 3 parametere van, de nincs kozte a tomb merete!
>
Biztos?
>Ezt a meretet hogyan hatarozzam meg?
>
Ehhez tudnod kell a tomb meretet, vagy azt, hogy mi jelzi a tomb veget:
nullpointer, nullstring, nulla jel (azonos hosszusagu stringek vegen nem
kell vegjel), fileveg vagy barmi mas egyezmenyes jel.
Szerintem rosszul ertetted a kerdest es ismert a stringek hossza es
darabszama is.
>Itt: int tomb[10];
>k = sizeof(tomb)/sizeof(tomb[0]);
>a k erteke helyesen hatarozodik meg, pedig a tomb itt is egy cim,
>megpedig az elso elem cime. Forditasi idoben hatarozodik meg a k erteke,
>ugye?
>
Igen, ugyhogy itt ez nem hasznalhato.
|
Szia
> megpedig az elso elem cime. Forditasi idoben hatarozodik meg a k erteke,
> ugye?
Bingo
A sizeof az ugy viselkedik, mint egy makro, a fordito hatarozza meg.
Viszont az eljarasodban te egy pointert kapsz, ami akarhany elemre mutathat.
A sizeof(pointer) midig 2-ot vagy 4-et ad vissza (platformtol fuggoen).
Tehat ha nem kapod meg a tomb meretet, akkor szivas. Ha esetleg a tombot te
hozod letre, akkor esetleg az lenne a megoldas, hogy az utolso elem utanra
betesz egy uj elemet (pl. egy 0 hosszusagu szot), amit az eljarasban konnyen
eszre tudsz venni.
Pali
|