Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [C] Mergesort

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143

    [C] Mergesort

    Ciao, devo scrivere una funzione mergesort in C. L'ho fatto ma non mi funziona. Il codice è:

    codice:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "sorting.h"
    
    void msort(int a[], int n) {
    	int aux[] = copy(a, aux, n);
    	msort2(a, 0, n - 1, aux);
    }
    
    void msort2(int a[], int fst, int lst, int b[]) {
    	if(fst < lst) {
    		int m = (fst + lst) / 2;
    		msort2(b, fst, m, a);
    		msort2(b, m + 1, lst, a);
    		merge(b, fst, m, lst, a);
    	}
    }
    
    int[] copy(int a[], int aux[], int n) {
    	int i;
    	for(i = 0; i < n; i++)
    		aux[i] = a[i];
            return aux;
    }
    
    void merge(int a[], int fst, int mid, int lst, int c[]) {
    	int i = fst;
    	int j = mid + 1;
    	int k = fst;
    	while(i <= mid && j <= lst) {
    		if(a[i] <= a[j])
    			c[k++] = a[i++];
    		else
    			c[k++] = a[j++];
    	}
    	while(i <= mid)
    		c[k++] = a[i++];
    	while(j <= lst)
    		c[k++] = a[j++];
    }
    
    File header:
    codice:
    
    void msort(int a[], int n);
    void msort2(int a[], int fst, int lst, int b[]);
    int[] copy(int a[], int aux[], int n);
    void merge(int a[], int fst, int mid, int lst, int c[]);
    
    Messaggio d'errore:
    codice:
    
    In file included from sorting.c:6:0:
    sorting.h:8:4: error: expected identifier or ‘(’ before ‘[’ token
    sorting.c: In function ‘msort’:
    sorting.c:81:2: error: invalid initializer
    sorting.c: At top level:
    sorting.c:94:4: error: expected identifier or ‘(’ before ‘[’ token
    
    
    Dove sbaglio? La funzione copy è giusta?

    Grazie

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    E' facile correggere gli errori di sintassi, basta guardare la riga e se ti dice che manca una parentesi la aggiungi.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Rivedi la funzione copy e il suo utilizzo all'interno della msort
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Originariamente inviato da oregon
    Rivedi la funzione copy e il suo utilizzo all'interno della msort
    Appunto. Quello che vorrei è che l'array a venga copiato in aux..

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Lo fai con una sola funzione : memcpy
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Niente da fare, il codice non è compilabile.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Originariamente inviato da oregon
    Lo fai con una sola funzione : memcpy
    Grazie per il consiglio ma vorri usare una funzione scritta da me come appunto copy.. percò non capisco perchè non va.. a me sembra giusto..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se vuoi copiare dei dati da un vettore ad un altro, tanto per cominciare la tua funzione non deve restituire nulla (void).

    In secondo luogo, quando la usi, gli array che passi devono esistere ... all'interno di msort non mi pare esista aux
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Ho risolto con un banale ciclo for..
    Grazie lo stesso

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma nella copy c'è già un "banale ciclo for" ... il tuo problema era utilizzare una funzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.