Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] fusione tra due vettori

    funziona abbastanza bene...tranne se i due vettori non hanno le stesse dimensioni...errore mio o algoritmo che funziona proprio così? se è questione di algoritmo si può modificare per avere dimensioni diverse?

    codice:
    #include <stdio.h>
    #define dim 100
    
    int main(){
    
    int a[dim], b[dim], c[dim];   
    int i, j, n, m, k;
    
    
    printf("inserire dimensioni vettore1 = ");
           scanf("%d", &n);
    
    printf("\ncaricare il vettore in modo non decrescente\n");
    
    for(i=0;i<n;i++){
       printf("a[%d] = ", i);
       scanf("%d", &a[i]);
    }
    
    printf("\ncaricare il vettore in modo non decrescente\n");
    
    printf("inserire dimensioni vettore2 = ");
           scanf("%d", &m);
        
    for(j=0;j<n;j++){
      printf("b[%d] = ", j);
      scanf("%d", &b[j]);
    }
    
    i=0;j=0;k=0;
    
    while(i<n && j<m){
              if(a[i]<b[j]){
              c[k]=a[i];i++;
              }
              else {
                   c[k]=b[j];j++;
                   }
                   k++;
                   }
    while(i<n){
               c[k]=a[i];i++;k++;
    }
    while(j<m){
               c[k]=b[j];j++;k++;
    }
    
    for(k=0;k<n+m;k++)
    printf("a[%d] = %d\n", k,c[k]);
    
    system("pause");
    return 0;
    }

  2. #2
    L'errore sta nel secondo for del programma dove inserisci la dimensione del vettore2:

    codice:
    for(j=0;j<n;j++){  /*la variabile n l'hai gia usata per il numero di elementi del primo array, da sostituire con m*/
       printf("b[%d] = ", j);  
       scanf("%d", &b[j]);
    }
    Infatti sostituendo la n nel for con la m che dovresti usare x il secondo array il risultato é corretto:
    codice:
    **Inserire dimensioni vettore1 = 2
    
    **Caricare il vettore in modo non decrescente
    a[0] = 1
    a[1] = 2
    
    **Caricare il vettore in modo non decrescente
    **Inserire dimensioni vettore2 = 4
    b[0] = 3
    b[1] = 4
    b[2] = 5
    b[3] = 6
    
    **Vettore Finale
    c[0] = 1
    c[1] = 2
    c[2] = 3
    c[3] = 4
    c[4] = 5
    c[5] = 6
    simo@localhost:~/Desktop$
    PS: si ho leggermente cambiato il tuo codice per l'output, cosi mi piaceva di piu!
    Ah se vuoi un consiglio, nei programmi dai sempre un nome appropriato alle variabili, semplici nomi quali lettere dell'alfabeto possono risultare confusionali, poi sono gusti..

  3. #3
    fatto! grazie mille!

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.