fbpx

Problema #1434 – Mutare2 – Rezolvari PBInfo

de Mihai-Alexandru

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];
}
Comentarii

S-ar putea sa iti placa