Hola amigos.
Este programa lo que hace es mezclar 2 vectores introducidos por el usuario y te los regresa en un solo vector ordenado alfabéticamente imprimiendolos en pantalla. Es útil cuando crear alguna aplicación como una agenda o algo por el estilo. El código esta bien comentado.
Este es un screenshot de como se ve el programa:

Y aquí está el codigo:
C++:
-
#include <iostream.h>
-
#include <stdlib.h>
-
#include <string.h>
-
void leerv(char v[][100], int n)
-
{
-
int a;
-
for (a=0;a<=n;a++)
-
cin>>v[a];
-
}
-
-
void mezclar(char v1[][100], int n1, char v2[][100], int n2, char v3[][100], int n3)
-
{
-
int a=0,c=0,x=0,c1=0,c2=0;
-
char aux[100];
-
for (c=0; c<=n3; c++)
-
{
-
if (c<=n1) //si todavia no se akaba el primer vector
-
{
-
v3[c]=v1[c1];
-
++c1;
-
}
-
else
-
{
-
v3[c]=v2[c2]; //si ya se akabo el primer vector entonces usamos el segundo
-
++c2;
-
}
-
-
if (c>0) //si NO es la primera vuelta
-
{
-
for (a=c; a>0; a--)
-
{
-
x=strcmp(v3[a],v3[a-1]);
-
if (x<0) //si el nuevo elemento es menor ke el anterior entonces intercambiamos
-
{
-
aux=v3[a-1];
-
v3[a-1]=v3[a];
-
v3[a]=aux;
-
}
-
}
-
}
-
}
-
}
-
-
void imprime(char v[][100], int n3)
-
{
-
int a;
-
cout<<endl<<endl<<"----Resultado-----";
-
for (a=0;a<=n3;a++)
-
cout<<endl<<v[a];
-
cout<<endl<<endl;
-
}
-
-
int main()
-
{
-
char v1[20][100], v2[20][100], v3[40][100],cad;
-
int a,n1=21,n2=21,n3=0;
-
while ((n1>20) || (n1<1))
-
{ cout<<"Introduce el total de palabras de la columna 1 [1-20]:"; cin>>n1; }
-
while ((n2>20) || (n2<1))
-
{ cout<<"Introduce el total de palabras de la columna 2 [1-20]:"; cin>>n2; }
-
n3=n1+n2-1;
-
n1--;
-
n2--;
-
cout<<endl<<"----Columna 1-----"<<endl;
-
leerv(v1,n1);
-
cout<<endl<<endl<<"----Columna 2-----"<<endl;
-
leerv(v2,n2);
-
mezclar(v1,n1,v2,n2,v3,n3);
-
imprime(v3,n3);
-
system("PAUSE");
-
return 0;
-
}
Espero y te sirva de algo.. Saludos!