allora ho questo programma
codice:
#include <stdio.h>
#include <malloc.h>
/* PROTOTIPO FUNZIONE */
void sel_sort(float *A, int n);
main() {
/* DICHIARAZIONE VARIABILI */
int i, n, c;
float *A;
/* LETTURA GRANDEZZA ARRAY */
printf("Inserire la grandezza n dell'array: ");
scanf("%d",&n);
/* ALLOCAZIONE DINAMICA DELLA MEMORIA */
if(!(A = (float *)malloc(n*sizeof(float))))
abort();
/* LETTURA DI TUTTI GLI ELEMENTI DELL' ARRAY A */
printf("\nInserire uno per uno tutti gli elementi dell'array...\n");
for (i=0; i<n; i++){
printf("Inserire il %d° elemento: ", c=i+1);
scanf("%f", &A[i]);
}
/* RICHIAMO DELLA FUNZIONE */
sel_sort(A, n);
/* STAMPA A VIDEO DELL'ARRAY ORDINATO */
printf("\nL'array A è ora ordinato come segue:\n");
for (i=0; i<n; i++)
printf("%f\n", A[i]);
}
/****************** SPECIFICHE FUNZIONE *************************/
void sel_sort(float *A, int n){
int i, j, p, min;
for (i=0; i<n-1; i++) {
min = A[i];
p = i;
for (j=i+1; j<n; j++){
if (A[j]<min){
min = A[j];
p = j;
}
A[p] = A[i];
A[i] = min;
}
}
}
che dovrebbe ordinare un' array ma se ad es dò in input un array del tipo:
6 2 45 12
lui mi dà in output:
2 2 12 45.
Che fine fà il 6? dove sbaglio???