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 sizea, int sizeb, int 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 sizea, int sizeb, int c[], int sizec){
int *p;
int *p1;
int sizep;
int sizep1;
int i,j,k;
if (a[0]<=b[0]){
sizep1= sizea-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;
}
}
}
}