Announcement

Collapse
No announcement yet.

Qsort - Array Dinamico - Error Control - Headers- Objects - Readme

Collapse
This is a sticky topic.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Qsort - Array Dinamico - Error Control - Headers- Objects - Readme

    main
    PHP Code:
    /*
     *
     * Qsort
     *
     * Require: compara_stringhe_c.o
     *
     */

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #include "main_header.h" // prototypes

    #define MAX_NUM "20" // numero cifre di input
    #define MAX_INPUT_S "99" // lunghezza massima stringa input per vettore buffer
    #define MAX_INPUT 100 // grande vettore buffer


    int main (void) {
        
        
    int n// numero elementi
        
    int i,j// contatore di appoggio
        
    char **vet_s// base_address dei char *
        
    char array [MAX_INPUT]; // buffer di chars
        
    char p_temp// puntatore temp  a char
        
        ///////////////////////////////////////////////// grandezza array
        
    printf("Numero di stringhe da inserire\n");
        
    scanf("%"MAX_NUM"d",&n);
        
        for(;
    n<0;){
            
    printf("Mi prendi in giro? Inserisci un numero intero positivo\n");
            
    scanf("%"MAX_NUM"d",&n);
        }
        
        
    ///////////////////////////////// inizio trattamento dati
        
    if (n==0){
            
            
    printf("Lei è un betatester pigro\n");
            
        }else{
            
    //////////////////////////// allocazioni spazio per gli n elementi
            
    vet_s= (char **)malloc (sizeof(void *));
            
    ////////////////////////// verifica spazio sufficiente
            
    if (vet_s == NULL) {
                
                
    printf("Spazio disponibile non sufficiente per l'allocazione\n");
            }else{
                
                for (
    i=0;i<n;i++){
                    
    ////////////////////////// input stringa
                    
    printf("Inserire la %d stringa :\n",i+1);
                    
    scanf("%" MAX_INPUT_S "s",array);
                    
                    
    ///////////////////////// conteggio stringa
                    
    for (j=0; (j!=MAX_INPUT)  && (array[j]!=0) ;j++){
                    }
                    
    ////////////////////////////verifica della presenza del tappo
                    
    if (j==MAX_INPUT){
                        
                        
    printf ("La stringa in input non è formattata correttamente");
                        array[
    j-1]=0;
                        
    j--;
                        
                    }
                    
                    
    ///////////////////////////////// alloco lo spazio per la stringa
                    
    p_temp = ( char *) malloc ((j+1) * sizeof(char *));
                    
                    if( 
    p_temp == NULL){
                        
                        
    printf("Spazio disponibile non sufficiente per l'allocazione\n");
                        exit(-
    1);
                        
                    }
                    
                    
                    
    /////////////////////////////// trasferisco i valori
                    
    for (j=0; array[j]!=;j++){
                        
                        *(
    p_temp j) = array [j];
                        
                    }
                    *(
    p_temp j) = array [j]; // aggiungo il tappo
                    
                    
    *(vet_s i) = p_temp;
                    
                }
                
                
    ////////////// fine inserimento valori /////
                
                ////////////stampo stringhe inserite
                
    printf ("\nStringhe inserite : \n\n");
                
                for(
    i=0;i<n;i++){
                                    
                    
    printf ("%s\n",*(vet_s i));
                }
                
                
    ////sorting delle stringhe
                
    qsort (vet_ssizeof(void *) , compara_stringhe);
                
                
    // stampa delle stringhe
                
    printf ("\nStringhe ordinate : \n\n");
                for(
    i=0;i<n;i++){
                                    
                    
    printf ("%s\n",*(vet_s i));
                    
    /////////////////// libero le allocazioni delle singole stringhe
                    
    free(*(vet_s i));
                    *(
    vet_s i)=NULL;
                }
                
    //////////////////// libero l'allocazione degli n elementi
                
    free(vet_s);
                
    vet_s=NULL;
                
            }
            
        }

        return 
    0;

    main header
    PHP Code:
    int compara_stringhe ( const void a, const void b); 
    function
    PHP Code:
    /*
     *
     * Funzione di comparazione stringhe
     *
     * Closed
     */

    int compara_stringhe ( const void a, const void b){
        
        
    char ** str1 = ( char **) a;
        
    char ** str2 = ( char **) b;
        
    int i diff;
        
    ///////////////////////////////////// controllo le stringhe ed esco solo se trovo un tappo
        
    for (i=0; *(*(str1) + i)!= && *(*(str2) + i)!= 0  ;i++){
            
    diff = *(*(str1) + i) - *(*(str2) + i);
            if (
    diff != 0){
                return 
    diff;
            }
        }
        
    ///////////////////////////////////rieffettuo la differenza e restituisco
        
    diff = *(*(str1) + i) - *(*(str2) + i);
        return 
    diff;  
        

    Attached Files
    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio
Working...
X

Google Profile


My name is Giovanni Di Grezia, but people call me xgiovio.

Here is my homepage:.

I'm a VFX Artist and Software Developer.

Giovanni Di Grezia