Announcement

Collapse
No announcement yet.

Merge Vettori con Funzione

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Merge Vettori con Funzione

    PHP Code:
    //dati 2 vettori a,b di interi ordinati, fare il merge di entrambi in un vettore c ordinato
    #include <st***.h>
    #define A 5
    //elementi di A
    #define B 7
    //elementi di B
    #define C (A+B)
    //elementi di C

    void stampa_vet(int vettore[],int size);
    void merge_vet_ord(int a[],int b[],int sizeaint sizebint c[], int sizec);
    void riempi_vet(int a[], int sizea);
    void ordina_vet (int vet[],int sizea);

    int main(void){
        
    int a[A];
        
    int b[B];
        
    int c[C];
        
    printf("Dai valori interi per vettore A\n");
        
    riempi_vet(a,A);
        
    ordina_vet(a,A);
        
    printf("Dai valori interi per vettore B\n");
        
    riempi_vet(b,B);
        
    ordina_vet(b,B);
        
    merge_vet_ord(a,b,A,B,c,C);
        
    stampa_vet(c,C);
        return 
    0;
    }

    void merge_vet_ord(int a[],int b[],int sizeaint sizebint c[], int sizec){
        
    int *p;
        
    int *p1;
        
    int sizep;
        
    int sizep1;
        
    int i,j,k;
        
        if (
    a[0]<=b[0]){
            
    sizep1sizea-1;
            
    sizep=sizeb;
            
    c[0]=a[0];
            
    p=b;
            
    p1=a;
        }else{
            
    sizep1=sizeb-1;
            
    sizep=sizea;
            
    c[0]=b[0];
            
    p=a;
            
    p1=b;
        }
        
    k=0;
        
    j=0;
        for(
    i=0;(i<sizep1) && (k<(sizec-1));i++){
            for(;(
    p[j]<=p1[i+1]) && (j<sizep) && (k<(sizec-1));j++){
                    
    k++;
                    
    c[k]=p[j];
            }
            if (
    k<(sizec-1)){
                
    k++;
                
    c[k]=p1[i+1];
            }else{
                break;
            }
        }
        for(;(
    j<sizep) && (k<(sizec-1));j++){
            
    k++;
            
    c[k]=p[j];
        }
    }

    void stampa_vet(int vettore[],int size){
        
    int i;
        
    i=0;
        
        for(
    i=0;i<size;i++){
            
    printf("%d ",vettore[i]);
        }
        
    printf("\n");
    }

    void riempi_vet(int a[], int sizea){
        
    int i;
        for (
    i=0;i<sizea;i++){
            
    scanf("%d",a+i);
        }
    }

    void ordina_vet (int vet[],int sizea){
        
    int i,c,temp;
        for (
    i=0;i<(sizea-1);i++){
            for (
    c=(i+1);c<sizea;c++){
                if (
    vet[i]>vet[c]){
                    
    temp=vet[i];
                    
    vet[i]=vet[c];
                    
    vet[c]=temp;
                }
            }
        }

    | 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