Ciao!!
la funzione che mi controlla se la serie di numeri da ordinare sia ordinata
prima del tempo non funziona bene.
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 */
Grazie!!!