Am nevoie de o solutie de 100p!
#899 OrdonareF
Cerinţa
Scrieţi definiția completă a subprogramului C++ ordonare care are 2 parametri: a, prin care primeşte un tablou unidimensional cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului.
Subprogramul ordonează crescător elementele tabloului a, fără a returna valori.
Restricţii şi precizări
-0 < n <= 1000
-numele subprogramului cerut este ordonare
-parametrii sunt, în această ordine: a, n
-elementele tabloului a sunt indexate de la zero
Exemplu
Dacă n=6 și a=(63,273,9,83,93,123), după apelul subprogramului tabloul a devine (9,63,83,93,123,273).
Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
Solutia mea este:
#include
using namespace std;
void ordonare(int a[],int n)
{
int i,j;
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
if(a[i]>a[j])
swap(a[i],a[j]);
}
int n,i,a[1001];
int main()
{
cin>>n;
for(i=1; i<=n; i++)
cin>>a[i];
ordonare(a,n);
for(i=1; i<=n; i++)
cout<
return 0;
}
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
void ordonare(int a[], int n)
{
int i,j, aux;
for (i=0;i<n-1; ++i)
for (j=i+1; j<n; ++j)
if (a[j]<a[i]) {
aux=a[i]; a[i]=a[j]; a[j]=aux;
}
return;
}
Explicație:
Nu ai fost atent la această Restricţie...
- elementele tabloului a sunt indexate de la zero.
Şi aici nu e bine...
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
if(a[i]>a[j])
swap(a[i],a[j]);
}
Dacă ar fi indexarea de la 1 până la n (dar tr. să fie de la zero conform restricţiilor), cum ai folosit se obţine eroare pt. i=n, deoarece j=i+1 şi ieşi din limitele vectorului. Tr. să ai for(i=1; i<n; i++) , numai pentru indexarea de la 1...
Alte întrebări interesante
Studii sociale,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Chimie,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă