Informatică, întrebare adresată de germoney, 8 ani în urmă

Se cere să se scrie o funcție care primește ca parametru un vector de n numere întregi și pune în vectorul original pe primele poziții toate numerele prime pe care le-a găsit în vector. Valorile de pe celelalte poziții nu contează. Funcția va returna numărul de numere prime găsite. Pentru testarea dacă un număr este prim, se va folosi o funcție care primește ca parametru acel număr și va returna 0 sau 1.
Exemplu: pentru vectorul v={8,4,7,9,3,10}, funcția transforma(v,6) va returna 2 și vectorul v va avea pe primele poziții valorile {7,3}.


boiustef: de unde e problema ?
boiustef: am postat intregul cod, nu numai functiile prim si transforma

Răspunsuri la întrebare

Răspuns de boiustef
2

#include <iostream>

using namespace std;

int prim(int m)

{

   int p=1;

   if (m<2) p=0;

   else

   {

       if (m==2) p=1;

       if (m>2)

       {

           if (m%2==0) p=0;

           else

           {

               for (int j=3; j*j<=m; j+=2)

                   if (m%j==0) { p=0; break;}

           }

       }

   }

   return p;

}

int transforma(int v[], int n)

{

   int k=-1, prime=0;

   for (int i=0; i<n; ++i)

   {

       if (prim(v[i]))

       {

           ++k; v[k]=v[i]; ++prime;

       }

   }

   return prime;

}

int main()

{

   int n, i, v[100];

   cin >> n;

   for (i=0; i<n; ++i)

       cin >> v[i];

   cout << transforma(v, n) << "\n";

   for (i=0; i<n; ++i)

       cout << v[i] << " ";

}


Alte întrebări interesante