👤

Cerința
Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică
Exemplu
Intrare

5
1 21 3 4 8
Ieșire

1 11 21 12 3 4 6 8

Programul meu imi da doar 80 de puncte.

#include
#include
using namespace std;
int n,x,p; int v[101];
void citire(int v[101],int n)
{
for(int i=1;i<=n;i++)
cin>>v[i];
}
void afisare(int v[101],int n)
{
for(int i=1;i<=n;i++)
cout< }
int paritate(int a)
{
if(a%2==0)
return 1;
else
return 0;
}
void inserare(int v[101],int &n)
{
for(int i=2;i<=n;i++)
if(paritate(v[i])==paritate(v[i-1]))
{
p=i;
for(int j=n+1;j>=p;j--)
v[j+1]=v[j];
v[p]=(v[i]+v[i-1])/2;
n++;
i++;
}
}
int main()
{
cin>>n;
citire(v,n);
inserare(v,n);
afisare(v,n);
return 0;
}


Răspuns :

ai incercat sa modifici dimensiunea vectorului?, fiindca daca vectorul tau ar avea toate elementele de aceeasi paritate, dimensiunea deja va fi depasita de 101 elemente pe care le-ai dat


#include <iostream>

#include <algorithm>

#include <cmath>

using namespace std;

int main()

{

   int n , x[101];

   cin >> n;

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

       cin >> x[i];

   cout << x[1] << ' ';

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

   {

       if(abs(x[i - 1] % 2) == abs(x[i] % 2))

           cout << (x[i] + x[i - 1]) / 2 << ' ' << x[i] << ' ';

       else  

           cout << x[i] << ' ';

   }

   return 0;

}