Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] parametri funzione compare per qsort

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int fcmp(int *elm1,int *elm2)
    
    
    main()
    {
        int v[10]={2,81,67,44,21,23,56,73,98,34};
        qsort(v,10,sizeof(int),fcmp);
    }
    
    
    int fcmp(int *elm1,int *elm2)
    {
        if((*elm1)<(*elm2))
            return -1;
        else if((*elm1)>(*elm2))
            return 1;
        else
            return 0;
    }
    Ciao a tutti!
    Mi sapete dire perchè nella funzione fcmp, se io metto come parametri formali (int *elm1,int *elm2),
    la funzione mi da errore?
    Su internet vedo che molti mettono (const void * a, const void * b).. qualcuno mi sa dare delucidazioni?
    Thx!
    Ultima modifica di MItaly; 18-03-2014 a 02:18 Motivo: tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Hai l'errore proprio perché i parametri della funzione passata alla qsort devono essere quelli previsti e non quelli che vuoi tu.
    Nella funzione opererai il cast

    codice:
    int fcmp(const void *elm1, const void *elm2)
    {
    	if((*(int *)elm1)<(*(int *)elm2))
    		return -1;
    	else if((*(int *)elm1)>(*(int *)elm2))
    		return 1;
    	else
    		return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi semplificare quel metodo restituendo la differenza, dato che non importa il valore restituito ma solo che sia <, > o = 0, come si legge sulla documentazione: http://www.cplusplus.com/reference/cstdlib/qsort/

    codice:
    int fcmp(const void *elm1, const void *elm2)
    {
        return (*(int *) elm1) - (*(int *) elm2);
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Cosa sarebbe il cast?
    Scusate l'ignoranza, ma sono un principiante con tanta voglia di imparare.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh, okay che devi imparare ma molti concetti di questo tipo si imparano dai libri o dai corsi, non nei forum.

    Leggi questo
    http://it.wikipedia.org/wiki/Conversione_di_tipo
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Grazie mille, ora ho capito!

Tag per questa discussione

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.