Cerința
Scrieţi definiţia completă a subprogramului C/C++ modificare
, care are doi parametri, v
şi n
, prin care primeşte un tablou unidimensional cu maximum 10000
de numere naturale nenule şi, respectiv, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului astfel încât toate valorile prime să se afle pe primele poziţii, iar valorile care nu sunt prime, în continuarea celor prime.
Exemplu
Pentru n=10
şi v=(42,36,7,53,27,15,29,40,39,2)
, după apel, v
ar putea fi (7,53,29,2,27,15,42,40,39,36)
.
Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
void modificare(int v[], int n) { int i, j, k1 = 0, k2 = 0, x, v1[10005], v2[10005]; bool prim; for(j = 0; j < n; j ++) { x = v[j]; prim = true; for (i = 2; i * i <= x; i ++) if(x % i == 0) { prim = false; break; } if(prim) v1[k1 ++] = x; else v2[k2 ++] = x; } for(j = 0; j < k1; j ++) v[j] = v1[j]; for(j = k1; j < n; j ++) v[j] = v2[j - k1]; }