Non stampa l'array ordinato

di il
1 risposte

Non stampa l'array ordinato

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;
}

}

1 Risposte

  • Re: Non stampa l'array ordinato

    Ciao al momento ho in pò da fare a breve ho l'esame di inglese questo che ti mando è un algoritmo di ordinamento per selezione se vuoi altri chiarimenti oppure non riescia risolvere il tuo probleme mandami un e-mail se riesco ti aiuto
    stai attento quello che ti mando rigurda il tipo char no il tipo int in ogno modo prova a prendere spunto da questo..
    #include <stdio.h>
    void ord_inser (char [],int n);
    void main()
    {
    int n_a;
    int i;
    char a []= {'m','p','l','u','g','e','f','c','k','t','d','s','v','w','j','e'};
    n_a=16;
    printf ("l'array non ordinato\n");
    for (i=0;i<n_a;i++)
    printf ("%c\n",a[i]);
    ord_inser (a,n_a);
    printf("array ordinato\n");
    for (i=0;i<n_a;i++)
    printf ("%c\n",a[i]);
    }
    void ord_inser(char array[],int n)
    {
    int i,j;
    char el_da_ins;
    for (i=1;i<n;i++)
    {
    el_da_ins = array[i];
    j = i-1;
    while(j>=0 && el_da_ins < array[j])
    {
    array[j+1] = array[j];
    j=j-1;
    }
    array[j+1] = el_da_ins;
    }
    }


    buona fortuna..
Devi accedere o registrarti per scrivere nel forum
1 risposte