codice:
#include <stdio.h>
#include <stdlib.h>
int fusione(int n_val1);
int main ( void )
{
int n_val1; //numero di valori del 1° array.
//Inserimento dei valori del 1° e 2° array da fondere.
printf ("Inserite il numero di valori del 1 array: ");
scanf ("%d",&n_val1);
n_val1=fusione(n_val1); // a cosa serve questo assegnamento?
printf("\n\n\n"); // miglioriamo la formattazione
system("pause");
}
int fusione(int n_val1)
{
int vet1[30]; //1° array da fondere.
int vet2[30]; //2° array da fondere.
int vettore[60]; //array finale.
int n_val2; //numero di valori del 2° array.
int i,j,k=0; //indici array.
for ( i=0 ; i<n_val1 ; i++ ){ // gli indici deveno partire da 0
printf ("Inserite il %d valore: ",i+1);
scanf ("%d",&vet1[i]);
}
printf ("Inserite il numero di valori del 2 array: ");
scanf ("%d",&n_val2);
for ( j=0 ; j<n_val2 ; j++ ){ // gli indici devono partire da 0
printf ("Inserite il %d valore: ",j+1);
scanf ("%d",&vet2[j]);
}
//Fusione dei 2 array dati in un unico array finale e stampa di quest'ultimo.
printf ("\nL'array finale e' il seguente:\n");
i=0; j=0; // devi azzerare gli indici
while (k<n_val1+n_val2){ // devi terminare quando k=n_val1+n_val2
if (vet1[i]<vet2[j]){
vettore[k]=vet1[i];
printf ("%d ",vettore[k]);
i++;
}
else{
vettore[k]=vet2[j];
printf ("%d ",vettore[k]);
j++;
}
k++;
}
if (j>n_val2){
while (i<n_val1){
vettore[k]=vet1[i];
printf ("%d ",vettore[k]);
i++;
}
}
else{
while (j<n_val2){
vettore[k]=vet2[j];
printf ("%d ",vettore[k]);
j++;
}
}
return n_val1; // perchè ritorni questo valore??
// è un valore che hai già passato alla funzione
}
La fase di inserimento potrebbe essere migliorata.
Ciao ciao