Salve, ho un problema con questo programma in C, premetto che sono un neofita alle prime armi quindi mi scuso in anticipo in caso di errori/orrori banali.
Stavo progettando un algoritmo di Insertion Sort e il problema principale è che se in input ad n do un valore minore di 6 il programma funziona bene, mentre se decido di inserire più di 6, me ne fa inserire più di quelli scelti nonostante nel primo for abbia messo come limite <=n. Vi ringrazio in anticipo.
#include <stdio.h>
#include <stdlib.h>
void insertion_sort(int n,int A[]);
int main() {
int n;
int A[n];
printf("\nQuanti elementi vuoi inserire ?\t");
scanf(" %d",&n);
for(int t=1;t<=n;t++) {
printf("\n Inserisci elemento numero %d\t",t);
scanf(" %d", &A[t]);
}
printf("\nArray selezionato:\n");
for(int k=1;k<=n;k++) {
printf("\n%d", A[k]);
}
insertion_sort(n,A);
printf("\n\nL'array ordinato e'");
for(int z=1;z<=n;z++) {
printf("\n%d", A[z]);
}
return 0;
}
void insertion_sort(int n,int A[]) {
int i,elem;
for(int j=2;j<=n;j++) {
elem=A[j];
i=j-1;
while(i>0 && A[i]>elem) {
A[i+1]=A[i];
i=i-1;
}
A[i+1]=elem;
}
}