Ciao!!
la funzione che mi controlla se la serie di numeri da ordinare sia ordinata
prima del tempo non funziona bene.
Grazie!!!codice:include <stdio.h> #define size 5 /* questo è il main del programma in cui si chiamano le tre funzioni per prendere in input, ordinare un array e farci una ricerca */ void input(int [], int); void selectsort(int [], int); void printarray(int[], int); char orderer(int[], int); main() { int numeri[size]; i input(numeri,size); selectsort(numeri,size); system("PAUSE"); } /*fine main*/ /* inizio funzione input*/ void input(int vet[], int dim) { int i; for(i=0; i<dim; i++) { printf("\n\n inserisci l'elemento numerico numero %d \n\n", i+1); scanf("%d", &vet[i]); } printarray(vet,dim); } /* fine della funzione di input */ /* inizio della funzione di selectionsort */ void selectsort(int vet[], int dim) { int i, j, p, min; char flag ='d'; /* inizio doppio ciclo di for alla base del selection sort */ for(i=0; i<(dim-1) && flag == 'd'; i++) { /* preset min */ min = vet[i]; for(j=i;j<dim; j++) { /* ricerca del consueto minimo */ if(min > vet[j]) { min = vet[j]; p=j; } else { if(min==vet[j]) { p=j; } } /* fine ricerca minimo*/ } /* scambio di posizioni nel caso il min non sia già memorizzato nella posizione giusta inizio */ if(p!=i) { vet[p] = vet[i]; vet[i] = min; } /* scambio di posizioni fine*/ flag = orderer(vet, dim); } /* fine doppio ciclo */ /* stampa dell'array selection ordinato*/ printarray(vet,dim); } /* stampa un array inizio*/ void printarray(int vet[], int dim) { int i; printf("\n\n"); for(i=0; i<dim; i++) { printf("%d\t", vet[i]); } printf("\n\n"); } /* stampa un array fine*/ /* inizio funzione per il controllo dell'ordine degli elementi */ char orderer(int vet[], int dim) { int i, j; char ret='d'; printf(" controllo se per caso l'ordine e' arrivato prima del tempo"); for(i=0 ; i<dim; i++) { j= i+1; if(vet[i]>vet[j]) { ret = 'o'; } } return ret; } /* fine funzione per il controllo dell'ordine degli elementi */

Rispondi quotando