PDA

Visualizza la versione completa : [C] Ordinamento di un array


devel
09-12-2009, 17:10
#include <stdio.h>

main () {
int ok;
int i,n,j,temp;
int A[]={1,2,3,4,5};
n=5;
//do {
//for (j=0;j<n;j++) {
do {
printf("ciclo while\n");
ok=1;
for (i=0;i<n;i++) {
if (A[i]>A[i+1]) {
printf("scambio\n");
temp=A[i];
A[i]=A[i+1];
A[i+1]=temp;
//printf("%d",A[i]);
ok=0; // FALSA
}
}
} while(ok==0);
//}
//} while (ok==0 && i<n);
for (i=0;i<n;i++) {
printf("%d\n",A[i]);
}
system("PAUSE");



Questo e' un esercizio svolto. Molto semplice, ho utilizzato i due printf per il debug anche perche' diversamente non so' come farlo.
Si tenga presente che cosi' com'e' funziona ma se avete suggerimento e/o altri consigli ditemi pure.

oregon
09-12-2009, 17:44
Ma la domanda qual e'? :confused:

YuYevon
09-12-2009, 18:09
Originariamente inviato da devel
Si tenga presente che cosi' com'e' funziona

C'č qualcosa di terribilmente rotto qui:



ciclo while
scambio
ciclo while
scambio
scambio
ciclo while
scambio
scambio
scambio
ciclo while
scambio
scambio
scambio
scambio
ciclo while
scambio
scambio
scambio
scambio
ciclo while
scambio
scambio
scambio
scambio
scambio
ciclo while
0
0
0
0
0


ti consiglierei di aggiustare cosė:



for (i = 0; i < n-1; i++) {


Per il resto, anche io non ho ben capito che tipo di consigli vorresti.

oregon
09-12-2009, 19:23
In effetti, in questa parte di codice



for (i=0;i<n;i++) {
if (A[i]>A[i+1]) {


la parte in rosso, con quel ciclo for, va oltre lo spazio allocato del vettore ...

Forse non l'hai provato bene ...

devel
10-12-2009, 18:58
Originariamente inviato da oregon
In effetti, in questa parte di codice



for (i=0;i<n;i++) {
if (A[i]>A[i+1]) {


la parte in rosso, con quel ciclo for, va oltre lo spazio allocato del vettore ...

Forse non l'hai provato bene ...

In che senso Oregon?
In fase di compilazione - esecuzione non mi da` nessun tipo di problema.

devel
10-12-2009, 18:59
Per il resto, anche io non ho ben capito che tipo di consigli vorresti.


Un qualsiasi consiglio - per migliorare l`applicazione.

oregon
10-12-2009, 19:55
Originariamente inviato da devel
In che senso Oregon?
In fase di compilazione - esecuzione non mi da` nessun tipo di problema.

Nessun errore in fase di compilazione, non č un problema a "compile time" ...

A runtime potresti non accorgerti di nulla, ma stai accedendo (in lettura, ma anche in scrittura a seconda dei casi nelle righe seguenti) ad un elemento dell'array che non esiste.

Avrai un comportamento "indefinito", se ti va bene, un errore di "access violation" se ti va male ...

(E diciamo che, se fossi un tuo professore, potrei pensare che non hai capito come funzionano gli array in C ...)

Loading