AM NEVOIE DE AJUTOR VA ROG
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.
mickey213:
poti sa imi spui numele problemei de pe pbinfo?...stiu ca am facut-o, dar nu o gasesc :)))
Răspunsuri la întrebare
Răspuns de
3
#include <bits/stdc++.h>
#define nmax 105
using namespace std;
int n,pozitii[nmax],a[nmax],b[nmax];
int main()
{
int i,j,lg;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
if(abs(a[i]-a[i+1])%2==0)
pozitii[i]=1;
j=1;
lg=0;
while(j<=n)
{
b[++lg]=a[j];
if(pozitii[j]==1)
b[++lg]=(a[j]+a[j+1])/2;
j++;
}
for(i=1;i<=lg;i++)
cout<<b[i]<<" ";
return 0;
}
#define nmax 105
using namespace std;
int n,pozitii[nmax],a[nmax],b[nmax];
int main()
{
int i,j,lg;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
if(abs(a[i]-a[i+1])%2==0)
pozitii[i]=1;
j=1;
lg=0;
while(j<=n)
{
b[++lg]=a[j];
if(pozitii[j]==1)
b[++lg]=(a[j]+a[j+1])/2;
j++;
}
for(i=1;i<=lg;i++)
cout<<b[i]<<" ";
return 0;
}
Răspuns de
7
Ai aici o sursa C++ la fel de eficienta...dar putin mai scurta. Succes!
#include <bits/stdc++.h>
using namespace std;
int n, i, x, y, ma, s;
int v[105];
int main()
{
cin >> n;
for(i = 1; i <= n; i ++)
cin >> v[i];
for(i = 1; i < n; i++)
{
cout << v[i] << " ";
x = abs(v[i]);
y = abs(v[i + 1]);
s = x + y;
ma=(v[i] + v[i + 1]) / 2;
if(s % 2 == 0) cout << ma << " ";
}
cout << v[n];
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n, i, x, y, ma, s;
int v[105];
int main()
{
cin >> n;
for(i = 1; i <= n; i ++)
cin >> v[i];
for(i = 1; i < n; i++)
{
cout << v[i] << " ";
x = abs(v[i]);
y = abs(v[i + 1]);
s = x + y;
ma=(v[i] + v[i + 1]) / 2;
if(s % 2 == 0) cout << ma << " ";
}
cout << v[n];
return 0;
}
Alte întrebări interesante
Limba română,
8 ani în urmă
Ed. muzicală,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă