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

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

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran elementele noului șir de numere obținut după inserarea elementelor, separate prin câte un spațiu.

Restricții și precizări
1 ≤ n ≤ 100
-1.000.000.000 ≤ elementele șirului ≤ 1.000.000.000

Exemplu
Intrare

5
1 21 3 4 8
Ieșire

1 11 21 12 3 4 6 8
Explicație
Între 1 și 21 se inserează numărul (1+21)/2=11. Între 21 și 3 se inserează numărul (21+3)/2=12. Între 3 și 4 nu se inserează nimic, pentru că au paritate diferită. Între 4 și 8 se inserează numărul 6.


#include

using namespace std;

int main()
{
long long n,v[101],i,x,k;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)
{
if(v[i]%2==v[i+1]%2)
{
k=i+1;
x=(v[i]+v[i+1])/2;}

for(i=n+1;i>=k;i--)
v[i+1]=v[1];
v[k]=x;
n++;

}
for(i=1;i<=n;i++)
cout< return 0;
}
asta e codul facut de mn de ce imi apar doar doua elemente 1 si 11?
ma puteti ajuta???
dau coronita

Răspunsuri la întrebare

Răspuns de Dica123
11
#include <iostream>
#include <cmath>
using namespace std;
int main()
{  
 long long n,i,v[101],k;  
 cin>>n;   
for (i=1;i<=n;i++)  
 {       
cin>>v[i];  
 }   
cout<<v[1]<<" ";  
 for (i=1;i<n;i++)  
 {      
 if ((v[i]%2==0&&v[i+1]%2==0)||(v[i]%2!=0&&v[i+1]%2!=0)) 
      {          
 k=(float)(v[i]+v[i+1])/2;           
cout<<k<<" "<<v[i+1]<<" ";       
}      
 else       
{           
cout<<v[i+1]<<" ";       }
   }
}

katan1: mai am o intrebare.... de ca la ultimul for ai pus strict mai mic ca n si nu mai mic sau egal??
Dica123: Uite iti explic cu un exemplu:Am un sir de n numere 7 8 4 9 2 care sunt salvate intr.un vector.Orcand v[i+1]este urmatorul element dupa v[i]daca ating ultima valoare atunci v[i+1]nu mai exista
katan1: aaaa da ......dar problema dda 0 pct pe pbinfo
Dica123: Cand v[i] va fii 2 atunci v[i+1]care va fi ?
Dica123: ai uitat sa copiezi ceva problema imi da 100p;
Dica123: Am verificat primesc 100
katan1: da merge am pus eu din obisnuinta return 0
Dica123: ok
Dica123: Am inclus bibloteca cmath nu face nimic a ramas acolo din greseala
katan1: nu.i nimic
Alte întrebări interesante