👤

#2721 Insert

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

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.

Imi da 60p,iar solutia mea e:

void Insert(int a[],int &n)
{
int i,j;
for(i=0; i<=n-1; i++)
{
if(a[i]%2==1)
{
n++;
for(j=n-1; j>i+1; j--)
a[j]=a[j-1];
i++;
}
}
for(i=n-1; i>=0; i--)
{
if(a[i]%2==1)
{
a[i+1]=2*a[i];
i--;
}
}
}


Răspuns :

Răspuns:

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

{

   int i,k=0;

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

       if (a[i]%2) ++k;

   int j=n+k-1;

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

   {

       if (a[i]%2) a[j--]=2*a[i];

       a[j--]=a[i];

   }

   n=n+k;

}

Explicație:

Posibil ai depăşire...

am numărat imparele şi încep completarea tabloului cu dimensiune extinsă, începând completarea de la capătul din dreapta.

Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari