Va rog ajutati-ma . Vreau cat mai simplu.
Cerinţa Se consideră şirul definit mai jos: în care nu există doi termeni cu aceeași paritate aflați pe poziții consecutive: 1, 2, 3, 4, 7, 8, 15, 16 ..... Pentru un număr natural x, termen al şirului dat, se cere să se afișeze pe ecran, în ordine strict descrescătoare, separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau egali cu x. Date de intrare Programul citeşte de la tastatură numărul x Date de ieşire Programul va afişa pe ecran în ordine strict descrescătoare, separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau egali cu x.
https://www.pbinfo.ro/?pagina=probleme&id=806
Răspunsuri la întrebare
Răspuns de
0
#include <vector>
#include <iostream>
using namespace std;
main()
{
int x,c;
cin >> x;
vector <int> a(1);
a[0]=1;
while (true) //ciclu infinit
{
if (a.size() % 2 ==1) a.push_back(a[a.size()-1]+1);
//daca nr de elemente in vector e impar atunci noi adaugam unul ci indece par
//a.size()-1 - indecele ultimului element
else a.push_back(a[a.size()-2]*2+1);
if (a[a.size()-1]>x)
//daca elementul adaugat e mai mare ca, il stergem si finisam ciclul
{
a.pop_back();
break;
}
}
for (int i=a.size()-1; i>=0; i--)
cout << a[i] << ' ';
}
#include <iostream>
using namespace std;
main()
{
int x,c;
cin >> x;
vector <int> a(1);
a[0]=1;
while (true) //ciclu infinit
{
if (a.size() % 2 ==1) a.push_back(a[a.size()-1]+1);
//daca nr de elemente in vector e impar atunci noi adaugam unul ci indece par
//a.size()-1 - indecele ultimului element
else a.push_back(a[a.size()-2]*2+1);
if (a[a.size()-1]>x)
//daca elementul adaugat e mai mare ca, il stergem si finisam ciclul
{
a.pop_back();
break;
}
}
for (int i=a.size()-1; i>=0; i--)
cout << a[i] << ' ';
}
Răspuns de
2
Ti-am facut o sursa C++, fara vectori dinamici la fel de eficienta ca si cea trimisa mai sus. Pentru sortare descrescatoare am folosit sort-ul din STL. Succes!
#include <iostream>
#include <algorithm>
bool cmp(const int nr1, const int nr2)
{
return nr1>nr2;
}
using namespace std;
long long a,b,k,i,c,n,v[1000];
int main()
{
cin>>n;
a=1;
b=2;
c=3;
i=3;
v[++k]=a;
while(a<=n)
{
i++;
a=b;
b=c;
if(i%2==0) c=1+b;
else c=1+2*a;
if(a<=n) v[++k]=a;
}
sort(v+1,v+k+1,cmp);
for(i=1;i<=k;i++) cout<<v[i]<<" ";
return 0;
}
#include <iostream>
#include <algorithm>
bool cmp(const int nr1, const int nr2)
{
return nr1>nr2;
}
using namespace std;
long long a,b,k,i,c,n,v[1000];
int main()
{
cin>>n;
a=1;
b=2;
c=3;
i=3;
v[++k]=a;
while(a<=n)
{
i++;
a=b;
b=c;
if(i%2==0) c=1+b;
else c=1+2*a;
if(a<=n) v[++k]=a;
}
sort(v+1,v+k+1,cmp);
for(i=1;i<=k;i++) cout<<v[i]<<" ";
return 0;
}
condratradu69:
#Respect
Alte întrebări interesante
Matematică,
8 ani în urmă
Religie,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
9 ani în urmă
Engleza,
9 ani în urmă