C programozás. Mi a megoldása a következő feladatnak?
A függvény igazat ad vissza, ha a paraméter karakterláncban minden karakter legfeljebb egyszer fordul elő.
int egyszer (const char* s) {
char e[256] = {0};
/*hiányzó sor*/
return !*s;}
a, for (; *s && !e[*s]; s++) e[*s]=0;
b, for (; *s && !e[*s]; s++) e[*s]=1;
c, for (; *s && e[*s]; s++) e[*s]=0;
d, for (; *s && e[*s]; s++) e[*s]=1;
A helyes megoldás:
b, for (; *s && !e[*s]; s++) e[*s]=1;
A függvény végigmegy a karakterláncban, és ellenőrzi, hogy az egyes karakterek már előfordultak-e a korábbi ciklusokban. Ha egy karakter még nem jelent meg, akkor e[*s]=1; értéket kap. Ha egy karakter már előfordult, akkor a e[*s] már 1 értéket tartalmaz, tehát a !e[*s] feltétel hamis lesz, és a ciklus kilép.
A return !*s; pedig azt jelenti, hogy ha a ciklus végigjárt az összes karaktert, akkor a !*s igaz lesz, tehát a függvény visszatér igazzal.
Köszönöm! És a magyarázatot is!
Esetleg még ebben is tudnál segíteni?
A legkisebb elemet kell megtalálni.
int min(const int *t, int n) {
/hiányzó sor/
for (i=1; i<n; i++)
if(t[i]<min) min = t[i];
return min; }
a, int min = *t, i;
b, int min = &t, i;
c, const int* min = *t, i;
d, const int* min = t, i;
e, const int min = *t, i;
A helyes válasz a) "int min = *t, i;"
Azért mert:
"int min" : az "min" változót egész számként deklarálja
"= *t": az "min" változót az "t" tömb első elemével inicializálja. Mivel "t" egy int-re mutató pointer, a "*t" azt az értéket adja vissza, ami az adott memóriacímen található.
"i": az "i" változót is egész számként deklarálja
A többi válasz nem működne megfelelően, mert:
b), "int min = &t, i;" : az "min" változó értékét a memória címével inicializálná
c), "const int* min = *t, i;": az "min" változót const int-re mutató pointerként deklarálná
d), "const int* min = t, i;" : hasonlóképpen, az "min" változót int-re mutató pointerként deklarálná, de itt const-ot nem használ.
e), "const int min = *t, i;" : az "min" változót const egész számként deklarálná, ami után nem lehetne módosítani az értékét a későbbi ciklusokban.
(Amúgy mindkét választ úgy kaptam, hogy a ChatGPT-be beraktam a kérdésed és ide beillesztettem a válaszát. Ennyire részletesen magamtól nem fejtettem volna ki.
Tehát egyszerűbb ha a jövőben a ChatGPT-t használod
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!