qualcuno sa dirmi xk non mi ordina niente???![]()
l'errore è sicuramente nella parte in grassetto (inserita xkè il prof vuole che si traduca fedelmente il prog dal Pascal in C).
codice:#include <stdlib.h> #include <stdio.h> #define MAX 300 /* * Funzione Merge per la fusione di due * componenti ordinate dell'array. */ void Merge(int A[], int primo, int mezzo, int ultimo) { int i, j, k, h, B[MAX]; i = primo; j = mezzo+1; k = 0; while (i <= mezzo && j <= ultimo) { if (A[i] < A[j]) { B[k] = A[i]; i++; } else { B[k] = A[j]; j++; } k++; } if (i <= mezzo) { j = ultimo - k; for (h=j; h>=0; h--) A[k+h] = A[i+h]; for (j=primo; j<k-1; j++) A[j] = B[j]; return; } } /* * Funzione ricorsiva MergeSort. */ void MergeSort(int A[], int primo, int ultimo) { int q; if (primo < ultimo) { q = (primo+ultimo)/2; MergeSort(A, primo, q); MergeSort(A, q+1, ultimo); Merge(A, primo, ultimo, q); } return; } /* * Funzione principale */ int main() { int *vet, n, i; printf("Quanti elementi vuoi inserire nell'array?: "); scanf("%d", &n); printf("\n"); vet = (int *) malloc (n*sizeof(int)); for(i = 0; i < n; i++) { printf("Inserisci il %d elemento dell'array: ", i+1); scanf("%d", &vet[i]); } printf("\nGli elementi inseriti nell'array sono: "); for(i = 0; i < n; i++) printf("%d ", vet[i]); printf("\n"); MergeSort(vet, 0, n-1); printf("\nL'array ordinato e' il seguente: "); for(i = 0; i < n; i++) printf("%d ", vet[i]); printf("\n\n"); system("pause"); return 0; }
se al posto di quel codice inserisco il seguente, il prog funziona, ma vorrei capire qual è l'errore che faccio nel precedente.
grazie.codice:while (i <= mezzo) { B[k] = A[i]; i++; k++; } } else { while (j <= ultimo) { B[k] = A[j]; j++; k++; } } for (k = primo; k <= ultimo; k++) A[k] = B[k - primo];![]()

Rispondi quotando