Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Qsort in linguaggio c

Visualizzazione discussione

  1. #3

    cioè? forse non ho capito . sono agli inizi .

    Quote Originariamente inviata da oregon Visualizza il messaggio
    vedi è il tipo non il nome del vettore. Dovrai scrivere

    vedi *vett
    cioè sostituire in tutte le chiamate di "v" vett?
    fammi un sempio sul codice cohe ho scarabocchiato .

    Esempio :

    codice:
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<iostream>
    #include<math.h>
    #define        STORE_FILE        "store.dat"
    #define    L 50                //do una dimensione max al vettore 
    
    
    typedef struct {                //creo vettore in cui salvare le letture 
        char campo1 [L];
        char campo2 [L];
    }  vedi;
    
    
    void scambia (vedi[],long ,long );
    void Qsort(vedi[],long,long );
    vedi *vett ;
    unsigned long g;
    
    
    int main(void )
    {
        do{
            printf("\nInserisci la grandezza del vettore :");
        scanf("%u",&g);
            } while (g<2);
             vett=(vedi*) malloc(g*sizeof(vedi));
        char tp;{
            printf("\n\t----------");
        printf("\n\t1-Leggi file" );
        printf("\n\t2-ordina File");
        printf("\n\t3-esci");
            printf("\n\t----------");
            }
            printf("\n\t-Scelta :",tp);
            tp=getchar();
            getchar();
            switch (tp){
                case '1':
        FILE *fp;
        int i;
        vedi m;
            if(!(fp=fopen("store.dat","rb"))){                                
                printf("\n errore di lettura dei dati%s ",STORE_FILE);            //creo il controllo 
                exit(1);
            }
            while (fread(&m,sizeof(m),1,fp)>0){                //legggo il file binario esterno 
                printf("\n-------------");
            printf("\ncampo1:%s",m.campo1);                //stampo i dati salvati nalla typedef struct 
            printf("\ncampo2:%s",m.campo2);
                
                printf("\n-------------");
                    }
            fclose(fp);
            return main();
            break;
            case '2':
                vedi *vett;
            void scambia(vedi [],long i,long j) ;{
                    long i;
                    long j;
                vedi temp =vett[i];
                vett[i]=vett[j];
                vett[j]=temp;
            }
            void  Qsort(vedi [],long min ,long mag);
                {    long min;
                    long mag;
                    long i=min;
                    long j=mag;
                    vedi pivot =vett[(min+mag)/2];
                while (i<=j){
                    while (strcmp(vett[i].campo1,pivot.campo1)<0 || (!strcmp(vett[i].campo1,pivot.campo1)<0))
                    i++;
                    while (strcmp(vett[j].campo1,pivot.campo1)>0 || (!strcmp(vett[j].campo1,pivot.campo1)<0))
                    j--;
                }
                    if (i<j)
                        scambia (vett,i,j);
                        if(i<=j){
                            i++;
                            j--;
                        }
                
                {
                if (min<j)  Qsort(vett,min,j);
                if (i<mag)    Qsort(vett,i,mag);
                }
            }
            break;
            case '3':    
            exit (1);
            break ;
    }
    
    
    }
    Ultima modifica di LeleFT; 19-11-2015 a 17:12 Motivo: Aggiunti i tag CODE

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 © 2025 vBulletin Solutions, Inc. All rights reserved.