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

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 Dennord
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.

Alte întrebări interesante