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

Cerința
Se dă un tablou cu n elemente, numere naturale. Să se înlocuiască fiecare element din tablou care nu este număr prim cu cel mai mic număr prim, mai mare decât el.

Se vor defini și apela următoarele subprograme:

citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
afisare, care afișează pe ecran elementele tabloului, separate prin exact un spațiu
prim, care verifică dacă un număr natural este prim
urmatorul_prim, care determină pentru un număr dat cel mai mic număr prim, mai mare decât acesta, folosind subprogramul prim
inloc, care realizează înlocuirile cerute.
În programele C/C++ nu se vor folosi variabile globale.

Date de intrare
Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.

Date de ieșire
Se vor afișa pe ecran elementele tabloului, separate prin exact un spațiu.

Restricții și precizări
1 ≤ n ≤ 1000
elementele tabloului vor fi mai mici decât 1.000.000.000Exemplu
Intrare

7
7 18 18 5 14 20 4
Ieșire

7 19 19 5 17 23 5


osiacandrei99: dau coroana si 24 de puncte
osiacandrei99: am nevoie urgent
osiacandrei99: am nevoie de ea in 10 minute
osiacandrei99: urgent
osiacandrei99: dau coroama
osiacandrei99: urgent
boiustef: 10 min au expirat... mai face să creez codul ?

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

using namespace std;

void citire(int &n, int v[])

{

   cin >> n;

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

       cin >> v[i];

}

bool prim(int m)

{

   int p=1;

   if (m<2) p=0;

   if (m==2) p=1;

   else

   {

       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==1;

}

void urmatorul_prim(int &x)

{

   while (!prim(x)) ++x;

}

void inloc(int n, int v[])

{

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

   {

       if (!prim(v[i])) urmatorul_prim(v[i]);

   }

}

void afisare(int n, int v[])

{

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

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

   cout << "\n";

}

int main()

{

   int n, v[1001];

   citire(n, v);

   inloc(n,v);

   afisare(n, v);

}

Alte întrebări interesante