Programa en C++: Números Malvados e Impares y Unión de Conjuntos con Arreglos

Informática y Telecomunicaciones7,03 KB

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;
}

Descargar

PDF Word HTML