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

Discussione: [C] QuickSort...

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122

    [C] QuickSort...

    ciao...a tutti...
    devo ordinare un vettore di strutture del tipo:
    [CODE]
    Points =[(2,0.25,0,0);(3,1,0,0);(4,0,0,0);(1,0,0,0);(3,1,0, 0);(4,0,0,0)]
    [\CODE]

    ho provato con una funzione di questo tipo:
    [CODE]
    qsort(Points, lunghezza_Points, sizeof(Points), compare );


    int compare (const void * left, const void * right)
    {
    return ( *(int*)left - *(int*)right );
    }
    [\CODE]

    che avevo trovato...ma non mi da il risultato atteso...
    qualche suggerimento??
    ciao..grazie...
    Mi raccomando!...in generale...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ... ma come devi ordinare i dati ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    li devo ordinare in modo crescente...il risultato dovrebbe essere:
    codice:
    Points_sort=[(1,0,0,0);(2,0.25,0,0);(3,1,0,0);(3,1,0,0);(4,0,0,0);(4,0,0,0)]
    quindi??
    Mi raccomando!...in generale...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Crescenti secondo il *primo* componente ...

    Ma la struttura qual e'?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    si, crescente secondo il primo componente...
    codice:
    struct DPoint
          {
    
             double x, y;
             DBOOL left, right; //FALSE DI DEFAULT
          } *Points;
    Mi raccomando!...in generale...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora

    codice:
    struct DPoint
    {
    	double x, y;
    	bool left, right; //FALSE DI DEFAULT
    };
    
    
    struct DPoint Points[] = {{2,0.25,0,0}, {3,1,0,0}, {4,0,0,0}, {1,0,0,0}, {3,1,0,0}, {4,0,0,0}};
    
    
    
    int compare (const void *v1, const void *v2) 
    { 
    	return (*((double *)v1) > *((double *)v2));
    } 
    
    
    
    int main(int argc, char* argv[])
    {
    	int i, n = sizeof(Points)/sizeof(DPoint);
    
    	for(i=0; i<n; i++)
    		printf("%f %f\n", Points[i].x, Points[i].y);
    
    	qsort(Points, n, sizeof(DPoint), compare); 
    
    	printf("\n\n");
    
    	for(i=0; i<n; i++)
    		printf("%f %f\n", Points[i].x, Points[i].y);
    
    	return 0;
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    ho provato ma non funziona!!!
    non ordina!!
    Mi raccomando!...in generale...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Io l'ho provato e funziona regolarmente.

    Quindi, per aiutarti a capire, devi dirmi qualcosa in piu' di "non ordina" ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    122
    non so che dirti...mi lascia il vettore cosi com'è...in piu...se inserisco n cosi come l'hai definita tu non entra proprio in compare, mentre se inserisco n=Lunghezza_Points (cioè 6)..ci entra.
    I risultati di compare sono nove confronti tra 0 e 0 e solo uno tra 3 e 0...
    ma precisamente compare cosa fa??
    Mi raccomando!...in generale...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma tu hai usato il codice che ti ho dato o lo hai modificato?

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.