Se dau n numere întregi. Să se insereze între oricare două numere de aceeași paritate media lor aritmetică. Algoritmul se va relua în mod repetat până când nu se mai poate adăuga șirului niciun nou element.
Exemplu
Intrare
6
1 41 3 3 4 8
Ieșire
1 41 3 3 4 8
1 21 41 22 3 3 4 6 8
1 11 21 31 41 22 3 3 4 5 6 7 8
1 6 11 16 21 26 31 36 41 22 3 3 4 5 6 7 8
Răspunsuri la întrebare
Răspuns de
13
#include <iostream>
#include <algorithm>
using namespace std;
int n,v[1000],i,j,ok;
int main()
{
cin>>n; // Citesc nr. de elemente
for(i=0;i<n;i++) // Citesc elementele sirului
cin>>v[i];
do // Formez un nou sir atata timp cat se pot adauga elemente noi
{
for(i=0;i<n;i++) // Scriu elementele sirului
cout<<v[i]<<' ';
cout<<'\n';
ok=0; // Presupunem ca nu se pot adauga elemente noi
i=0;
while(i<n-1) // Parcurgem sirul
if(abs(v[i]%2)==abs(v[i+1]%2)&&v[i]!=v[i+1]) // Verificam daca se pot introduce noi elemente
{
n++; // Sirul va avea un element in plus
for(j=n-1;j>=i+2;j--) // Facem loc noului element
v[j]=v[j-1];
v[i+1]=(v[i]+v[i+1])/2; // Calculam noul element
ok=1; // Marcam ca am adaugat element nou
i+=2; // Sarim si peste elementul nou
}
else
i++; // Sarim doar la urmatorul element
} while(ok); // Cat tmp adaugam un element nou, repetam
return 0;
}
Alte întrebări interesante