Devo fare questo esercizio:
Scrivere una funzione che, dato un array di stringhe e la sua lunghezza, lo ordini utilizzando l'algoritmo Insertion Sort. Scrivere un programma che utilizzi la funzione per ordinare un array di N stringhe lette da input e stampi in output gli elementi dell'array ordinato.Assumere che la lunghezza massima di una stringa sia 100 caratteri.
io ho scritto questo codice:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
void insertionsort (char **a,int n){
int j,t;
char key[100];
for (j=1; j<n; j++) {
strcpy(key,a[j]);
t = j-1;
while ((t>=0) && (strcmp(key,a[t])<0)) {
strcpy(a[t+1],a[t]);
t = t-1;
strcpy(a[t+1],key);
}
}
}
int main () {
int n;
char **a;
int i;
scanf ("%d",&n);
a=malloc(n*sizeof(char));
for (i=0; i<n; i++) {
a[i]=malloc(101*sizeof(char));
scanf ("%s",a[i]);
}
insertionsort(a,n);
for (i=0; i<n; i++) {
printf ("%s\n",a[i]);
}
return 0;
}
il bello è che il programma fatto da me funziona solo se n<=4 sennò mi da errore:
"segmentation faul (core dumped)
Qualcuno mi può dare una mano?? grazie in anticipo