Răspuns :
Întâi să aranjăm puțin codul (am atașat și o poză cu el aranjat):
int f(int a[], int N){
int i,j;
for(i=0; i<N-1; i++) {
for(j=i+1; j<N; j++) {
if(a[i] == a[j]) {
return 0;
}
}
}
return 1;
}
Observăm că funcția primește un vector de int-uri (a) și un număr N, probabil lungimea vectorului.
Iar apoi parcurge cu i, vectorul, însă merge de la 0 până la penultimul element (N-2, adică mai mic decât N -1).
Iar pentru fiecare dintre aceste repetiții (iterații) cu acest i, mai avem un for, care pornește de la i + 1 și merge până la ultimul element (N-1, adică < N).
Deci să încercăm să simulăm un exemplu simplu, să zicem că N = 6.
În acest caz, i-ul o să aibă, pe rând, următoarele valori: 0, 1, 2, 3, 4, și atât (se oprește la i < N - 1, adică la i < 5, adică la 4), deci va parcurge doar pentru primele 5 elemente din vector (fără ultimul).
Bun, și să luăm prima iterație a for-ului:
o să fie i = 0, și începe al 2-lea for, în care j-ul merge de la i + 1 (adică de la 1) până la j < N (adică până la 5), deci j va fi pe rând 1, 2, 3, 4, 5 (adică toate elementele, dar începând de la al doilea).
Și pentru fiecare dintre acestea se face o verificare dacă elementul de pe poziția i este egală cu cea de pe poziția j. Dacă condiția este adevărată, se returnează 0 și se încheie funcția (imedat după un return într-o funcție, se iese din funcție, nu se mai execută nimic altceva), iar dacă condiția e falsă, de fiecare dată, se termină for-urile și se returnează 1.
Deci, practic, se verifică următoarele numere
i = 0
--> j = 1 => a[0] == a[1]
--> j = 2 => a[0] == a[2]
...
--> j = 5 => a[0] == a[5]
i = 1
--> j = 2 => a[1] == a[2]
--> j = 3 => a[1] == a[3]
...
--> j = 5 => a[1] == a[5]
...
până la i = 4 și j = 5 (a[4] == a[5])
Deci vedem că sunt verificate toate numerele între ele 2 câte 2 (1-2, 1-3, 1-4, ..., 3-4, 3-5, 4-5), și dacă vreunul din ele este egal, se returnează 0 și se oprește funcția. Iar dacă niciunul din ele nu este, și scăpăm de return 0 ăla, se încheie for-ul și ajungem la return 1, deci funcția returnează 1.
În cazul cerinței tale, când va ajunge i-ul la 2 (a[2], adică 3) și j-ul la 4 (a[4], adică celălalt 3), condiția ca a[i]==a[j] este adevărată și se returnează 0.
Mai general vorbind, funcția respectivă verifică în vectorul a (considerând că N este numărul de elemente din el) dacă toate elementele sunt unice. Dacă sunt, se returnează 1, iar dacă există dubluri, se returnează 0.

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că ați găsit conținutul oferit util și inspirațional. Dacă aveți întrebări suplimentare sau doriți asistență, vă încurajăm să ne contactați. Ne-ar face plăcere să reveniți și nu uitați să ne adăugați în lista dumneavoastră de favorite!