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

Nu inteleg ce este gresit la acest algoritm .
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 ieşire
Programul afișează pe ecran, separate prin spaţii, cele n elemente ale vectorului, după sortare.
Am pus x[i]=-1 pt ca vectorul v contine doar numere naturale,iar -1 nu apartine lui N, ci lui Z

Anexe:

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
3
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int i,n,aux,j;
    cin >> n;
    int v[n], x[n];
    for(i=1;i<=n;i++)
        cin >> v[i];
    for(i=1;i<=n;i++)
        x[i]=-1;
    for(i=1;i<=n;i++)
    {
        if(((int)sqrt(v[i])*(int)sqrt(v[i]))==v[i])
            x[i]=v[i];
    }
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            if((x[i]>x[j]) && (x[i]!=-1) && (x[j]!=-1))
        {
            aux=x[i];
            x[i]=x[j];
            x[j]=aux;
        }
    for(i=1;i<=n;i++)
        if(x[i]==-1)
        x[i]=v[i];
    for(i=1;i<=n;i++)
        cout<<x[i]<<" ";
    return 0;
}

Ia vezi daca merge asa


feherdarius: Nu merge
AntiEaglesDavids: poti fi mai explicit?
feherdarius: Aparea eroarea /240
feherdarius: erau niste caractere in spatiile albe.. nu stiu de ce
feherdarius: dar am sters toate spatiile albe si acum merge
feherdarius: dar explica mi
feherdarius: de ce merge acum :))
feherdarius: ai pus doar int sqrt
feherdarius: sqrt retine valoarea anterioara ?
Alte întrebări interesante