Programa en C y C++ para Vectores: Capicúa, Suma de Pares y Posiciones Impares
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 (
iyj). 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-whiley un bloqueswitchpara ejecutar de forma repetida las diferentes opciones hasta que el usuario decida salir.