Informatică, întrebare adresată de adelina122qmea, 9 ani în urmă

Scrieţi definiția completă a subprogramului C++ permutare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 100 de numere naturale mai mici decât 1000 și n, numărul efectiv de elemente ale tabloului.Subprogramul verifică dacă elementele vectorului a reprezintă o permutare fără puncte fixe a mulțimii {1,2,...,n} și returnează valoarea 1 în caz afirmativ, respectiv 0 în caz negativ.
Restricţii şi precizări
0 < n <= 100
numele subprogramului cerut este permutare
parametrii sunt, în această ordine: a, n, cu semnificația de mai sus
elementele vectorului a sunt indexate de la zero
Exemplu
Dacă n=6 și a=(2,3,1,6,4,5) subprogramul va returna valoarea 1.

Dacă n=4 și a=(2,3,1,4) subprogramul va returna valoarea 0, deoarece permutarea are un punct fix.

Răspunsuri la întrebare

Răspuns de express
2
int permutare(int a[], int n)
{
    int i, v[1001]={0};
    for(i = 0; i < n; i++)
        v[a[i]] ++;
    for(i = 0; i < n; i ++)
       {
           if(a[i] == i+1) return 0;
           if(v[i+1] != 1) return 0;
       }
       return 1;
}


adelina122qmea: Ce inseamna v[1001]={0};?
express: Se initializeaza in subprogram vectorul v[] cu 0...este vorba de o variabila locala ce trebuie initializata cu 0
adelina122qmea: dar nu am invatat asa ceva...adica nu stiu despre ce e vorba. se poate scrie altceva in locul "v[1001]={0}"?
adelina122qmea: cum poti initializa un vector? nu se declara pur si simplu?
express: La un vector declarat global toate elementele sunt 0. In subprogram unde un vector este declarat local, el ia valori aleatoare, asa ca trebuie initializat cu 0. Citeste in manual despre variabile locale si globale si ai sa intelegi. Succes!
Alte întrebări interesante