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
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 (c) [Seleccionar]
#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;
}