ayudenme a hacer un algoritmo (solucion), que se unan 2 conjuntos
Hola Michael, acá te dejo un código para que lo estudies funciona perfectamente en DEV C++ 4.9.9.2
//Programa que por medio de funciones une dos array de enteros
//y luego los ordena x Luis Pedro Méndez.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Función para unir las dos matrices y asignarlas a otra destino
void unirmatrices(int *array1, int elementos1, int *array2, int elementos2, int *arraydestino)
{
//variable para el bucle for
int i;
//recorremos hasta el limites pasado en -elementos1-
for( i = 0; i < elementos1; i++)
//Asignamos al array destino, los elementos del primer array
arraydestino[i] = array1[i];
}
//Ahora pasamos al array destino los elementos del segundo array.
for( i = 0; i < elementos2; i++)
//al valor i le lsumamos la cantidad de elementos del primer array
//para no sobreescribir ninguno.
arraydestino[i + elementos1] = array2[i];
//Método de ordenamiento muy popular
void ordenar_tabla_de_menor_a_mayor(int *array, int elementos)
int i, j, aux;
/* recorremos todos los elementos,
desde el primero hasta el anteúltimo
(ya que el último quedará siempre en
la última posición) */
for (i=0; i<elementos-1; i++) {
/* comenzamos a buscar desde el próximo elemento
del actual (i+1), y vamos hasta el final */
for (j=i+1; j<elementos; j++) {
/* comparamos, si el primero es mayor,
debe ir al final, por lo que intercambiaremos
los valores (esto se conoce como "swap") */
if (array[i] > array[j]) {
aux = array[i]; /* guardamos el valor [i] en un temporal*/
array[i] = array[j]; /* le asignamos [j] a [i] */
array[j] = aux; /* le asignamos el temporal guardado a [j] */
//Procedimiento maestro
int main(void)
/* cantidad de elementos a ordenar y del array destino*/
#define ELEMENTOS 9
/* tablas a ordenar y la tabla destino*/
int array1[5] = {1,3,6,9,17};
int array2[4] = {2,4,10,17};
int array [9];
//unimos las dos matrices
unirmatrices(array1, 5, array2, 4, array);
/* ordenamos la matriz destino */
ordenar_tabla_de_menor_a_mayor(array, ELEMENTOS);
/* imprimir la tabla ordenada */
printf("Las dos matrices unidas y ordenadas:\n");
printf("___________________________________:\n");
for (i=0; i<ELEMENTOS; i++)
printf("%d \n", array[i]);
printf("\n");
system("pause");
return 0;
Atentamente.
ELINV.
teniendo un arreglo "arr1" con "n" valores, y otro "arr2" con "m" valores, la union de estos en el arreglo "arr3" de longitud "n+m" deberia ser asi:
for(i=0;i<n;i++)
arr3[i]=arr1[i];
for(i=0;i<m;i++)
arr3[n+i]=arr2[i];
recien empezamos con arreglos en mi curso, asi que puede que halla otra manera, de todas formas, parece estar bien.
Declara un tercer arreglo y con un for recorre los otros dos arreglos y los vas copiando al tercero, claro que el tercer arreglo lo debes de declarar mas grande.
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
Hola Michael, acá te dejo un código para que lo estudies funciona perfectamente en DEV C++ 4.9.9.2
//Programa que por medio de funciones une dos array de enteros
//y luego los ordena x Luis Pedro Méndez.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//Función para unir las dos matrices y asignarlas a otra destino
void unirmatrices(int *array1, int elementos1, int *array2, int elementos2, int *arraydestino)
{
//variable para el bucle for
int i;
//recorremos hasta el limites pasado en -elementos1-
for( i = 0; i < elementos1; i++)
{
//Asignamos al array destino, los elementos del primer array
arraydestino[i] = array1[i];
}
//Ahora pasamos al array destino los elementos del segundo array.
for( i = 0; i < elementos2; i++)
{
//al valor i le lsumamos la cantidad de elementos del primer array
//para no sobreescribir ninguno.
arraydestino[i + elementos1] = array2[i];
}
}
//Método de ordenamiento muy popular
void ordenar_tabla_de_menor_a_mayor(int *array, int elementos)
{
int i, j, aux;
/* recorremos todos los elementos,
desde el primero hasta el anteúltimo
(ya que el último quedará siempre en
la última posición) */
for (i=0; i<elementos-1; i++) {
/* comenzamos a buscar desde el próximo elemento
del actual (i+1), y vamos hasta el final */
for (j=i+1; j<elementos; j++) {
/* comparamos, si el primero es mayor,
debe ir al final, por lo que intercambiaremos
los valores (esto se conoce como "swap") */
if (array[i] > array[j]) {
aux = array[i]; /* guardamos el valor [i] en un temporal*/
array[i] = array[j]; /* le asignamos [j] a [i] */
array[j] = aux; /* le asignamos el temporal guardado a [j] */
}
}
}
}
//Procedimiento maestro
int main(void)
{
/* cantidad de elementos a ordenar y del array destino*/
#define ELEMENTOS 9
/* tablas a ordenar y la tabla destino*/
int array1[5] = {1,3,6,9,17};
int array2[4] = {2,4,10,17};
int array [9];
int i;
//unimos las dos matrices
unirmatrices(array1, 5, array2, 4, array);
/* ordenamos la matriz destino */
ordenar_tabla_de_menor_a_mayor(array, ELEMENTOS);
/* imprimir la tabla ordenada */
printf("Las dos matrices unidas y ordenadas:\n");
printf("___________________________________:\n");
for (i=0; i<ELEMENTOS; i++)
printf("%d \n", array[i]);
printf("\n");
system("pause");
return 0;
}
Atentamente.
ELINV.
teniendo un arreglo "arr1" con "n" valores, y otro "arr2" con "m" valores, la union de estos en el arreglo "arr3" de longitud "n+m" deberia ser asi:
for(i=0;i<n;i++)
{
arr3[i]=arr1[i];
}
for(i=0;i<m;i++)
{
arr3[n+i]=arr2[i];
}
recien empezamos con arreglos en mi curso, asi que puede que halla otra manera, de todas formas, parece estar bien.
Declara un tercer arreglo y con un for recorre los otros dos arreglos y los vas copiando al tercero, claro que el tercer arreglo lo debes de declarar mas grande.