Salve a tutti.
Il frammento di codice che segue, ciò che deve fare è semplicemente prendere in input un array di n elementi di int e visualizzare a video l'array ordinata, tramite il semplice alg. di ordinamento insersort.
L'alg. di ordinamento funziona, ma nn in uscita viene stampato l'array originale, e nn quello ordinato.Dove sta il problema?
#include <stdio.h>
#include <stdlib.h>
void insertsort(int *a,int n);
int main ()
{
int num_elem,i,z;
int *a,*b,*c;
printf("Inserisci il numero di elementi che compongono l'array: \n");
scanf("%d", &num_elem);
a=(int*)calloc(num_elem,sizeof(int));/*Alloca un array di num_elem*/
b=a;
c=a;
for (i=0; i<num_elem; i++){
printf("Inserisci il %d elemento:", i+1);
scanf("%d", a);
a++;
}
printf("L'array originale e': \n");
for(z=0; z<num_elem; z++){
printf("%d\n", *b);
b++;
}
insertsort(a,num_elem);
printf("L'array ordinato e': \n");
for(z=0; z<num_elem; z++){
printf("%d\n", *c);
c++;
}
return 0;
}
void insertsort(int *a,int n)
{
int valore_ins,
i,
j,
z;
for (i = 1;
(i < n);
i++)
{
for (valore_ins = *(a+i), j = i - 1;
((j >= 0) && (*(a+j) > valore_ins));
j--)
*(a+j + 1) = *(a+j);
if (j + 1 != i)
*(a+j + 1) = valore_ins;
}
}