codice:
#include <stdio.h>
#include <stdlib.h>
void gestione();
void inserimento(int, int, int *, int *);
void ordinamento(int, int, int *, int *);
void merge(int, int, int *, int *, int *);
void visualizzazione(int, int, int *, int *, int *);
main()
{
gestione();
system("PAUSE");
return(0);
}
void gestione()
{
int n,l;
printf("Quanti valori vuoi inserire nel primo vettore?: ");
scanf("%d",&n);
int vett_1[n];
printf("Quanti valori vuoi inserire nel secondo vettore?: ");
scanf("%d",&l);
printf("\n");
int vett_2[l];
int vett_3[n+l];
inserimento(n, l, vett_1, vett_2);
ordinamento(n, l, vett_1, vett_2);
merge(n, l, vett_1, vett_2, vett_3);
visualizzazione(n, l, vett_1, vett_2, vett_3);
}
void inserimento(int n, int l, int *primo, int *secondo)
{
int i,j;
for(i=0;i<n;i++){
printf("%d%c valore del primo vettore: ",i+1,248);
scanf("%d",&primo[i]);
}
printf("\n");
for(j=0;j<l;j++){
printf("%d%c valore del secondo vettore: ",j+1,248);
scanf("%d",&secondo[j]);
}
}
void ordinamento(int n, int l, int *primo, int *secondo)
{
int z,i,j,k,p_aux,s_aux;
for(z=0;z<n;z++)
for(i=0;i<n;i++){
if(primo[i]>primo[i+1]){
p_aux=primo[i];
primo[i]=primo[i+1];
primo[i+1]=p_aux;
}
}
for(k=0;k<l;k++)
for(j=0;j<l;j++){
if(secondo[j]>secondo[j+1]){
s_aux=secondo[j];
secondo[j]=secondo[j+1];
secondo[j+1]=s_aux;
}
}
}
void merge(int n, int l, int *primo, int *secondo, int *terzo)
{
int i = 0, j = 0, k = 0;
do {
if(primo[i]<=secondo[j])
terzo[k++] = primo[i++];
else
terzo[k++] = secondo[j++];
}
while(i<n && j<l);
if(i<n)
for(; i<n; terzo[k++] = primo[i++])
;
else
for(; j<l; terzo[k++] = secondo[j++])
;
}
void visualizzazione(int n, int l, int *primo, int *secondo, int *terzo)
{
int i,j,k;
printf("\n");
for(i=0;i<n;i++){
printf("%d%c valore del primo vettore: %d\n",i+1,248,primo[i]);
}
printf("\n");
for(j=0;j<l;j++){
printf("%d%c valore del secondo vettore: %d\n",j+1,248,secondo[j]);
}
printf("\n");
for(k=0;k<(l+n);k++){
printf("%d%c valore della fusione dei due vettori: %d\n",k+1,248,terzo[k]);
}
}
Per quanto riguarda il merge: