[RISOLTO]Insertion sort su array di stringhe

di il
3 risposte

[RISOLTO]Insertion sort su array di stringhe

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

3 Risposte

Devi accedere o registrarti per scrivere nel forum
3 risposte