Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Qsort in linguaggio c

Visualizzazione discussione

  1. #1

    Qsort in linguaggio c

    Ho scritto questo codice come esercizio di fread , di un file dat esterno non generato dal programma .
    La prima parte funziona.
    poi volevo ordinarlo con una Qsort ma mi da i seguenti errori (sono alle prime armi).

    C:\Users\AppData\Local\Temp\ccmCMoGe.o freadSemplice.cpp.text+0x36c): undefined reference to `scambia(vedi*, long, long)'
    C:\Users\AppData\Local\Temp\ccmCMoGe.o freadSemplice.cpp.text+0x3c1): undefined reference to `Qsort(vedi*, long, long)'
    C:\Users\AppData\Local\Temp\ccmCMoGe.o freadSemplice.cpp.text+0x3f0): undefined reference to `Qsort(vedi*, long, long)'
    C:\Users\Desktop\Prova programmi\collect2.exe [Error] ld returned 1 exit status

    Il codice che ho scritto è il seguente :

    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 *v ;
    unsigned long g;
    
    
    int main(void )
    {
        do{
            printf("\nInserisci la grandezza del vettore :");
        scanf("%u",&g);
            } while (g<2);
             v=(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 *v;
            void scambia(vedi [],long i,long j) ;{
                    long i;
                    long j;
                vedi temp =v[i];
                v[i]=v[j];
                v[j]=temp;
            }
            void  Qsort(vedi [],long min ,long mag);
                {    long min;
                    long mag;
                    long i=min;
                    long j=mag;
                    vedi pivot =v[(min+mag)/2];
                while (i<=j){
                    while (strcmp(v[i].campo1,pivot.campo1)<0 || (!strcmp(v[i].campo1,pivot.campo1)<0))
                    i++;
                    while (strcmp(v[j].campo1,pivot.campo1)>0 || (!strcmp(v[j].campo1,pivot.campo1)<0))
                    j--;
                }
                    if (i<j)
                        scambia (v,i,j);
                        if(i<=j){
                            i++;
                            j--;
                        }
                
                {
                if (min<j)  Qsort(v,min,j);
                if (i<mag)    Qsort(v,i,mag);
                }
            }
            break;
            case '3':    
            exit (1);
            break ;
    }
    
    
    }

    chi mi aiuta ?????????????????
    Ultima modifica di LeleFT; 19-11-2015 a 14:45 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.