Programa en C++: Números Malvados e Impares y Unión de Conjuntos con Arreglos
Programa en C++: números malvados e impares
Programa que guarda en un arreglo números que sean malvados e impares.
#include <iostream>
#define max 1000
using namespace std;
int pide_n();
void llenar(int a[max], int n);
void mostrar(int a[max], int n);
void malvado(int x);
int main()
{
int i, numero, arreglo[max], x;
x = pide_n();
cout << endl;
llenar(arreglo, x);
cout << endl;
mostrar(arreglo, x);
cout << endl;
cout << "Ahora, evaluaremos para saber cuáles de esos números son malvados e impares" << endl;
for (i = 0; i < x; i++)
{
malvado(arreglo[i]);
}
return 0;
}
int pide_n() ///Función que pide el largo del arreglo
{
int n; ///Necesitamos saber el largo del arreglo que quiere el usuario
cout << "Por favor, ingrese cuántos números tendrá el conjunto: " << endl;
cin >> n;
return n;
}
void llenar(int a[max], int n) ///Función donde se llena el arreglo
{
int i, numero;
cout << "Por favor, ingrese los números del conjunto a evaluar" << endl;
for (i = 0; i < n; i++)
{
cout << "Ingrese un número para la posición " << i + 1 << " del conjunto: "; ///El usuario conocerá la posición del número que está ingresando
cin >> numero;
a[i] = numero;
}
}
void mostrar(int a[max], int n) ///Función que muestra el arreglo
{
int i;
cout << "Los números que usted ingresó son: " << endl;
for (i = 0; i < n; i++)
{
cout << a[i] << "\t"; ///Se deben mostrar los números del conjunto
}
}
void malvado(int x) ///Función que evalúa qué números del arreglo son malvados e impares
{
int base, contador = 0, aux;
aux = x;
while (aux > 0) ///Se trabaja en base binaria, hasta el momento en que el número quede en 0
{
base = aux % 2; ///Con el %2 se obtiene el dígito de la base binaria
if (base == 1)
{
contador++; ///Como el número malvado evalúa la cantidad de 1 en la base binaria, solo tomaremos en cuenta esos casos
}
aux = aux / 2;
}
if ((contador % 2 == 0) && (x % 2 == 1)) ///El trabajo solicita que sean malvados e impares, así que debe cumplir con ambas condiciones
{
cout << x << " es un número malvado e impar" << endl;
}
}
Programa en C++: unión de tres conjuntos
Programa que une tres conjuntos de números.
#include <iostream>
#define max 1000
using namespace std;
int pide_n();
void llenar1(int a1[max], int n);
void llenar2(int a2[max], int n);
void llenar3(int a3[max], int n);
void mostrar(int a1[max], int a2[max], int a3[max], int n);
int esta(int x, int a4[max], int n);
void uni(int a4[max], int n);
int main()
{
int i, j = 0, x, y, arreglo1[max], arreglo2[max], arreglo3[max], arreglo4[3 * max];
x = pide_n();
cout << endl;
llenar1(arreglo1, x); ///Llamamos a la función para llenar el primer arreglo
llenar2(arreglo2, x); ///Llamamos a la función para llenar el segundo arreglo
llenar3(arreglo3, x); ///Llamamos a la función para llenar el tercer arreglo
mostrar(arreglo1, arreglo2, arreglo3, x);
for (i = 0; i < x; i++) ///Enviaremos cada número del 1er arreglo a la función esta
{
y = esta(arreglo1[i], arreglo4, j);
if (y == 0)
{
arreglo4[j] = arreglo1[i];
j++;
}
}
for (i = 0; i < x; i++) ///Enviaremos cada número del 2do arreglo a la función esta
{
y = esta(arreglo2[i], arreglo4, j);
if (y == 0)
{
arreglo4[j] = arreglo2[i];
j++;
}
}
for (i = 0; i < x; i++) ///Enviaremos cada número del 3er arreglo a la función esta
{
y = esta(arreglo3[i], arreglo4, j);
if (y == 0)
{
arreglo4[j] = arreglo3[i];
j++;
}
}
cout << endl;
uni(arreglo4, j); ///Llamamos a la función uni para mostrar la unión de los conjuntos
return 0;
}
int pide_n() ///Le pedimos el largo de los arreglos
{
int n;
cout << "Por favor, ingrese el largo del conjunto: " << endl;
cin >> n;
return n;
}
void llenar1(int a1[max], int n) ///Llenamos el primer arreglo
{
int i;
cout << "Comencemos a llenar los arreglos" << endl;
cout << "Comencemos llenando el primer arreglo" << endl;
for (i = 0; i < n; i++)
{
cout << "Ingrese un número para la posición " << i + 1 << " del conjunto: ";
cin >> a1[i];
cout << endl;
}
}
void llenar2(int a2[max], int n) ///Llenamos el segundo arreglo
{
int i;
cout << "Ahora llenemos el segundo arreglo" << endl;
for (i = 0; i < n; i++)
{
cout << "Ingrese un número para la posición " << i + 1 << " del conjunto: ";
cin >> a2[i];
cout << endl;
}
}
void llenar3(int a3[max], int n) ///Llenamos el tercer arreglo
{
int i;
cout << "Ahora llenemos el tercer arreglo" << endl;
for (i = 0; i < n; i++)
{
cout << "Ingrese un número para la posición " << i + 1 << " del conjunto: ";
cin >> a3[i];
cout << endl;
}
}
void mostrar(int a1[max], int a2[max], int a3[max], int n) ///Mostramos los tres arreglos
{
int i;
cout << "El primer conjunto que ingresó es: " << endl;
for (i = 0; i < n; i++)
{
cout << a1[i] << "\t";
}
cout << endl;
cout << "El segundo conjunto que ingresó es: " << endl;
for (i = 0; i < n; i++)
{
cout << a2[i] << "\t";
}
cout << endl;
cout << "El tercer conjunto que ingresó es: " << endl;
for (i = 0; i < n; i++)
{
cout << a3[i] << "\t";
}
}
int esta(int x, int a4[max], int n) ///Función que evalúa si un número está dentro del nuevo arreglo
{
int j;
for (j = 0; j < n; j++)
{
if (a4[j] == x)
{
return 1; ///Si está presente en el conjunto, retorna 1 que representa un falso
}
}
return 0;
}
void uni(int a4[max], int n) ///Función que muestra en pantalla la unión de los conjuntos
{
int j;
cout << "El conjunto unión es: " << endl;
for (j = 0; j < n; j++)
{
cout << a4[j] << "\t";
}
cout << endl;
}