Programa en C y C++ para Vectores: Capicúa, Suma de Pares y Posiciones Impares

Matemáticas4,02 KB

Programa en C/C++: Verificación de Vector Capicúa y Sumas Condicionales

El siguiente programa implementa un menú interactivo en consola para trabajar con vectores (arreglos unidimensionales). Permite ingresar elementos, verificar si la estructura es capicúa (simétrica o palíndroma), sumar los valores pares y sumar aquellos elementos ubicados en índices impares.

Código Fuente Corregido

#include <stdio.h>
#include <stdbool.h>

// Función para cargar los datos en el vector
void cargar(int vector[100], int &dim) {
    int i;
    printf("Introduce la dimensión del vector: ");
    scanf("%i", &dim);
    for (i = 1; i <= dim; i++) {
        printf("Introduce el elemento %i: ", i);
        scanf("%i", &vector[i]);
    }
}

// Función para verificar si el vector es capicúa
bool capicua(int vector[100], int &dim) {
    int i, j;
    i = 1;
    j = dim;
    while ((vector[i] == vector[j]) && (i <= (dim / 2))) {
        printf("v[%i] = %i, v[%i] = %i, dim/2 = %f\n", i, vector[i], j, vector[j], (float)dim / 2); // Chivato de depuración
        i++;
        j--;
    }
    if ((dim / 2) == i - 1) {
        printf("El vector es capicúa\n");
        return true;
    } else {
        printf("El vector no es capicúa\n");
        return false;
    }
}

// Función para sumar los elementos pares del vector
int sumpares(int vector[100], int dim) {
    int i, suma = 0;
    for (i = 1; i <= dim; i++) {
        if (vector[i] % 2 == 0) {
            suma = suma + vector[i];
        }
    }
    printf("La suma de los elementos pares es %i\n", suma);
    return suma;
}

// Función para sumar los elementos que están en posiciones impares
int sumaposimpar(int vector[100], int dim) {
    int i, suma = 0;
    for (i = 1; i <= dim; i++) {
        if (i % 2 != 0) {
            suma = suma + vector[i];
        }
    }
    printf("La suma de las posiciones impares es %i\n", suma);
    return suma;
}

// Menú principal de opciones
void menu() {
    int opcion, dim;
    int vector[100];
    do {
        printf("\n--- MENÚ ---\n");
        printf("1.- Capicúa\n");
        printf("2.- Suma pares\n");
        printf("3.- Suma pos impares\n");
        printf("4.- Salir\n");
        printf("Elige una opción: ");
        scanf("%i", &opcion);

        switch (opcion) {
            case 1:
                cargar(vector, dim);
                capicua(vector, dim);
                break;
            case 2:
                cargar(vector, dim);
                sumpares(vector, dim);
                break;
            case 3:
                cargar(vector, dim);
                sumaposimpar(vector, dim);
                break;
            case 4:
                printf("Adiós\n");
                break;
            default:
                printf("Opción inválida. Intente de nuevo.\n");
                break;
        }
    } while (opcion != 4);
}

int main() {
    menu();
    return 0;
}

Descripción de los Módulos del Sistema

  • cargar: Solicita al usuario la cantidad total de elementos deseados y realiza la lectura consecutiva de cada valor, almacenándolos a partir del índice 1.
  • capicua: Compara los extremos del arreglo mediante dos punteros o índices simétricos (i y j). Imprime trazas informativas sobre las posiciones evaluadas y determina si el arreglo se lee de igual forma de izquierda a derecha que de derecha a izquierda.
  • sumpares: Itera sobre el vector comprobando mediante el operador módulo (%) si el elemento es par, acumulando la suma total correspondiente.
  • sumaposimpar: Realiza el acumulado únicamente de aquellos valores alojados en posiciones o índices impares del arreglo.
  • menu: Presenta la interfaz interactiva mediante un bucle do-while y un bloque switch para ejecutar de forma repetida las diferentes opciones hasta que el usuario decida salir.

Descargar

PDF Word HTML