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++:
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. void leerv(char v[][100], int n)
  5. {
  6.   int a;
  7.   for (a=0;a<=n;a++)
  8.     cin>>v[a];
  9. }
  10.  
  11. void mezclar(char v1[][100], int n1, char v2[][100], int n2, char v3[][100], int n3)
  12. {
  13.   int a=0,c=0,x=0,c1=0,c2=0;
  14.   char aux[100];
  15.   for (c=0; c<=n3; c++)
  16.     {
  17.      if (c<=n1) //si todavia no se akaba el primer vector
  18.        {
  19.         v3[c]=v1[c1];
  20.         ++c1;
  21.        }
  22.      else
  23.        {
  24.         v3[c]=v2[c2]; //si ya se akabo el primer vector entonces usamos el segundo
  25.         ++c2;
  26.        }
  27.  
  28.      if (c>0)  //si NO es la primera vuelta
  29.        {
  30.         for (a=c; a>0; a--)
  31.           {
  32.            x=strcmp(v3[a],v3[a-1]);
  33.            if (x<0) //si el nuevo elemento es menor ke el anterior entonces intercambiamos
  34.              {
  35.               aux=v3[a-1];
  36.               v3[a-1]=v3[a];
  37.               v3[a]=aux;
  38.              }
  39.           }
  40.        }
  41.     }
  42. }
  43.  
  44. void imprime(char v[][100], int n3)
  45. {
  46.   int a;
  47.   cout<<endl<<endl<<"----Resultado-----";
  48.   for (a=0;a<=n3;a++)
  49.     cout<<endl<<v[a];
  50.   cout<<endl<<endl;
  51. }
  52.  
  53. int main()
  54. {
  55.   char v1[20][100], v2[20][100], v3[40][100],cad;
  56.   int a,n1=21,n2=21,n3=0;
  57.   while ((n1>20) || (n1<1))
  58.     { cout<<"Introduce el total de palabras de la columna 1 [1-20]:"; cin>>n1; }
  59.   while ((n2>20) || (n2<1))
  60.     { cout<<"Introduce el total de palabras de la columna 2 [1-20]:"; cin>>n2; }
  61.   n3=n1+n2-1;
  62.   n1--;
  63.   n2--;
  64.   cout<<endl<<"----Columna 1-----"<<endl;
  65.   leerv(v1,n1);
  66.   cout<<endl<<endl<<"----Columna 2-----"<<endl;
  67.   leerv(v2,n2);
  68.   mezclar(v1,n1,v2,n2,v3,n3);
  69.   imprime(v3,n3);
  70.   system("PAUSE");
  71.   return 0;
  72. }

Espero y te sirva de algo.. Saludos!

ed3109055696a25c5a2018802183769c
Share via email