Cerinţa
Să se ordoneze crescător elementele pătrat perfect ale unui şir dat, fără a afecta elementele care nu sunt pătrat perfect.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorului.
Date de ieşire
Programul afișează pe ecran, separate prin spaţii, cele n elemente ale vectorului, după sortare.
Restricţii şi precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 50000
Exemplu
Intrare
8
9 15 16 4 5 1 7 9
Ieșire
1 15 4 9 5 9 7 16
//in C++
//183
Răspunsuri la întrebare
Răspuns de
14
#include <iostream>
using namespace std;
int n,v[1005];
bool pp(int x)
{
for (int i=0;i*i<=x;i++)
if (i*i==x) return true;
return false;
}
int main()
{
cin>>n;
for (int i=1;i<=n;i++) cin>>v[i];
for (int i=1;i<n;i++)
{
for (int j=i+1;j<=n;j++)
{
if (pp(v[i]) && pp(v[j]) && v[i]>v[j])
{
int t=v[i];
v[i]=v[j];
v[j]=t;
}
}
}
for (int i=1;i<=n;i++) cout<<v[i]<<" ";
return 0;
}
Faci sortarea cu 2 for-uri si interschimbi cele 2 elemente (metoda celor 3 pahare) doar daca ambele sunt patrate perfecte si daca nu sunt deja sortate.
using namespace std;
int n,v[1005];
bool pp(int x)
{
for (int i=0;i*i<=x;i++)
if (i*i==x) return true;
return false;
}
int main()
{
cin>>n;
for (int i=1;i<=n;i++) cin>>v[i];
for (int i=1;i<n;i++)
{
for (int j=i+1;j<=n;j++)
{
if (pp(v[i]) && pp(v[j]) && v[i]>v[j])
{
int t=v[i];
v[i]=v[j];
v[j]=t;
}
}
}
for (int i=1;i<=n;i++) cout<<v[i]<<" ";
return 0;
}
Faci sortarea cu 2 for-uri si interschimbi cele 2 elemente (metoda celor 3 pahare) doar daca ambele sunt patrate perfecte si daca nu sunt deja sortate.
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă