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

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 ionutg38
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