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
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
#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
Alte întrebări interesante
Matematică,
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ă
Matematică,
9 ani în urmă