Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 29 Noviembre 2016, 15:56 pm



Título: (Consulta)Error al unir 2 arreglos
Publicado por: palacio29 en 29 Noviembre 2016, 15:56 pm
Hola.

Tengo un ejercicio en el cual tengo 2 arreglos y tengo que crear un tercer arreglo que contenga los dos arreglos anteriores de manera ordenada.
No puedo usar arreglos auxiliares, tampoco puedo usar burbujeo.
Lo hago y el codigo tiene logica, pero no logro que funcione correctamente.

Ejemplo:

Arreglo 1: 1,2,3,6
Arreglo 2. 4,5,8,9.
Resultado: 1,2,3,4,5,6,8,9.
Resultado Que Me Da a mi (Horrible) :  1,2,3,6


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void CARGA(int arreglo[10]);
  4. void imprimir(int arreglo[20]);
  5. void unir(int arreglo1[10],int arreglo2[10],int resultante[20]);
  6. int main()
  7. {
  8.    int arreglo1[10]={0};
  9.    int arreglo2[10]={0};
  10.    int resultante[20]={0};
  11.    printf("Ingrese arreglo 1: \n ");
  12.    CARGA(arreglo1);
  13.    printf("\nIngrese arreglo 2:  \n ");
  14.    CARGA(arreglo2);
  15.  
  16.    printf("\n");
  17.    printf("\nEl arreglo resultante es: \n");
  18.    unir(arreglo1,arreglo2,resultante);
  19.    imprimir(resultante);
  20.    return 0;
  21. }
  22. void CARGA(int arreglo[10])
  23. {
  24.    int i=0;
  25.    int numero;
  26.  
  27.    scanf("%d",&numero);
  28.    while(numero!=0)
  29.    {
  30.        arreglo[i]=numero;
  31.        i++;
  32.        scanf("%d",&numero);
  33.    }
  34.    arreglo[i]=0;
  35.  
  36. }
  37. void imprimir(int arreglo[20])
  38. {
  39.    int i=0;
  40.  
  41.    for(i=0;i<10;i++)
  42.    {
  43.        if(arreglo[i]!=0)
  44.        {
  45.            printf(" %d - ",arreglo[i]);
  46.        }
  47.    }
  48.  
  49. }
  50.  
  51. void unir(int arreglo1[10],int arreglo2[10],int resultante[20])
  52. {
  53.    int i=0,j=0,k=0;
  54.  
  55.    while(arreglo1[i]!=0)
  56.    {
  57.        while(arreglo2[j]!=0)
  58.        {
  59.            if(arreglo1[i]<arreglo2[j])
  60.            {
  61.  
  62.                resultante[k]=arreglo1[i];
  63.            }
  64.            else
  65.            {
  66.  
  67.                resultante[k]=arreglo2[j];
  68.            }
  69.            j++;
  70.        }
  71.        j=0;
  72.        k++;
  73.        i++;
  74.    }
  75.  
  76. resultante[k]=0;
  77.  
  78.  
  79.  
  80. }