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

Buna!
Ma poate ajuta cineva cu problema aceasta?

#2721 Insert
Această problemă acceptă numai soluții în C++.
Clasa a 10-a Subprograme Subprograme care prelucrează tablouri unidimensionale Insert
Etichete: Inserare in tablou


Să se scrie funcția cu următorul antet:

view sourceprint?
1.
void Insert(int a[], int &n)
Funcția primește ca parametri un vector a de numere naturale și n – numărul elementelor vectorului. Să se insereze după fiecare număr impar dublul său.

Restricții și precizări
după inserarea de elemente, este garantat că n va avea lungimea cel mult 800.000
inițial vectorul are cel puțin un element
0 ≤ a[i] ≤ 1.000.000, pentru orice i=0,n-1.
vectorul este indexat de la 0 la n-1
este garantat că vectorul a va putea memora în final toate elementele inițiale și cele inserate

Exemplu
Dacă n = 5 și a = (22,5,7,8,11), atunci Insert(a, n) trebuie să obțină n = 8 și a = (22,5,10,7,14,8,11,22)

Important
Soluţia propusă va conţine definiţia funcţiei cerute. 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.


Multumesc!

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
1

void Insert(int a[], int &n){

   int k = 0;

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

       if(a[i] % 2 == 1){

           k++;

       }

   }

   n += k;

   for(int i = n - 1; i >= 0; i--){

      if(a[i-k] % 2 == 1){

           a[i] = a[i-k] * 2;

           i--;

           k--;

       }

       a[i] = a[i-k];

   }

}

Alte întrebări interesante