Stefi024 a scris:Pai m-am gandit ca pentru a fi o permutare trebuie sa aiba in ordine elementele de la 1 la n , iar fiecare numar sa fie pe pozitia i (de aici v=i) ...
Nu. Permutarea este o alta ordonarea a multimii initiale. Pentru asta trebuie sa verifici daca multimea citita de la tastatura are aceleasi elemente cu cea originala. La problema ta e un caz favorizant faptul ca multimea este formata din numere naturale consecutive.
Cel care a facut programul a gandit sa ordoneze crescator elementele multimii si apoi sa verifice daca sunt fiecare pe pozitia lui. Doar ca ... vectorii in majoritatea limbajelor de programare sunt 0 based. Adica primul element are indexul 0. Ar fi trebuit sa iti sara in ochi ca a declarat un vector de 101 elemente, cand multimea ta are maxim 100.
Bun, deci, unde e buba? Buba e ca tu citesti si ordonezi vectorul incepand cu pozitia 0, iar apoi valoarea din vector cu pozitia lui. Ori tu valorea 0 nu o citesti, pentru ca numerele introduse trebuie sa fie intre 1 si 100. (Aici mai are o hiba programul, nu validezi datele introduse). Ca sa mearga ai doua variante:
1. la citire si ordonare pornesti de la i=1
2. la verificarea ordinii pornesti de la i=0 pana la n-1 si compari pe v cu i-1