codice:
#include <stdio.h>
void gestione();
void inserimento(int, int *);
void ordinamento(int, int *);
void fusione(int, int, int *, int *, int *);
void visualizzazione(int, int *);
main()
{
gestione();
system("PAUSE");
}
void gestione()
{
int a,b,c,d;
char risp,invio;
printf("Inserisci la lunghezza del primo vettore: ");
scanf("%d",&a);
printf("Inserisci la lunghezza del secondo vettore: ");
scanf("%d",&b);
printf("\n");
int vett_1[a];
int vett_2[b];
c=a+b;
int merge[c];
inserimento(a, vett_1);
inserimento(b, vett_2);
ordinamento(a, vett_1);
ordinamento(b, vett_2);
fusione(a, b, vett_1, vett_2, merge);
visualizzazione(c, merge);
int x;
do{
printf("Vuoi inserire un altro vettore?(s/n): ");
scanf("%c",&risp);
getchar();
if(risp=='s'){
printf("Inserisci la lunghezza del nuovo vettore: ");
scanf("%d",&d);
int vett_4[d];
for(x=0;x<a;x++){
printf("%d%c elemento del vettore: ",x+1,248);
scanf("%d",&vett_4[x]);
}
for(x=0;x<a;x++){
vett_1[x]=vett_4[x];
vett_2[x]=merge[x];
}
ordinamento(d, vett_1);
fusione(d, c, vett_1, vett_2, merge);
visualizzazione(d, merge);
}
else{
printf("Premi invio per uscire");
scanf("%c",&invio);
}
break;
}
while(risp=='s');
}
void inserimento(int z, int *vett)
{
int i;
for(i=0;i<z;i++){
printf("%d%c elemento del vettore: ",i+1,248);
scanf("%d",&vett[i]);
}
printf("\n");
}
void ordinamento(int z, int *vett)
{
int j,i,aux;
for(j=0;j<z-1;j++)
for(i=0;i<z-1;i++){
if(vett[i]>vett[i+1]){
aux=vett[i];
vett[i]=vett[i+1];
vett[i+1]=aux;
}
}
printf("\nIl vettore adesso %c ordinato in modo crescente: \n",138);
for(i=0;i<z;i++)
printf("%d%c elemento del vettore: %d\n",i+1,248,vett[i]);
}
void fusione(int a, int b, int *primo, int *secondo, int *fusione)
{
int i,j,k;
i=0;
j=0;
k=0;
do{
if(primo[i]<=secondo[j])
fusione[k++]=primo[i++];
else
fusione[k++]=secondo[j++];
}
while(i<a && j<b);
if(i<a)
for(;i<a;fusione[k++]=primo[i++]);
else
for(;j<b;fusione[k++]=secondo[j++]);
}
void visualizzazione(int c, int *fusione)
{
printf("\nFusione dei due vettori: \n");
int k;
for(k=0;k<c;k++)
printf("%d%c elemento della fusione dei due vettori: %d\n",k+1,248,fusione[k]);
}