(Consulta)Error al unir 2 arreglos

Iniciado por palacio29, 29 Noviembre 2016, 15:56 PM

0 Miembros y 1 Visitante están viendo este tema.

palacio29

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


#include <stdio.h>
#include <stdlib.h>
void CARGA(int arreglo[10]);
void imprimir(int arreglo[20]);
void unir(int arreglo1[10],int arreglo2[10],int resultante[20]);
int main()
{
    int arreglo1[10]={0};
    int arreglo2[10]={0};
    int resultante[20]={0};
    printf("Ingrese arreglo 1: \n ");
    CARGA(arreglo1);
    printf("\nIngrese arreglo 2:  \n ");
    CARGA(arreglo2);

    printf("\n");
    printf("\nEl arreglo resultante es: \n");
    unir(arreglo1,arreglo2,resultante);
    imprimir(resultante);
    return 0;
}
void CARGA(int arreglo[10])
{
    int i=0;
    int numero;

    scanf("%d",&numero);
    while(numero!=0)
    {
        arreglo[i]=numero;
        i++;
        scanf("%d",&numero);
    }
    arreglo[i]=0;

}
void imprimir(int arreglo[20])
{
    int i=0;

    for(i=0;i<10;i++)
    {
        if(arreglo[i]!=0)
        {
            printf(" %d - ",arreglo[i]);
        }
    }

}

void unir(int arreglo1[10],int arreglo2[10],int resultante[20])
{
    int i=0,j=0,k=0;

    while(arreglo1[i]!=0)
    {
        while(arreglo2[j]!=0)
        {
            if(arreglo1[i]<arreglo2[j])
            {

                resultante[k]=arreglo1[i];
            }
            else
            {

                resultante[k]=arreglo2[j];
            }
            j++;
        }
        j=0;
        k++;
        i++;
    }

resultante[k]=0;



}