#include
#include
int sumaDigitosPares(int numero) {
int ultimoDigito;
if (numero < 0) {
numero = -numero;
}
if (numero == 0) {
return 0;
}
ultimoDigito = numero % 10;
if (ultimoDigito % 2 == 0) {
return ultimoDigito + sumaDigitosPares(numero / 10);
} else {
return sumaDigitosPares(numero / 10);
}
}
void recorrerVector(int *vector, int tam, int indice, int *numeroMayor, int *sumaMayor) {
int sumaActual;
if (indice >= tam) {
return;
}
sumaActual = sumaDigitosPares(vector[indice]);
printf("Numero: %d -> Suma de digitos pares: %d\n", vector[indice], sumaActual);
if (sumaActual > *sumaMayor) {
*sumaMayor = sumaActual;
*numeroMayor = vector[indice];
}
recorrerVector(vector, tam, indice + 1, numeroMayor, sumaMayor);
}
int main() {
int tam, i;
int *vector;
int numeroMayor = 0;
int sumaMayor = -1;
printf("Ingrese la cantidad de numeros: ");
scanf("%d", &tam);
if (tam <= 0) {
printf("Error: La cantidad debe ser mayor a 0\n");
return 1;
}
vector = (int *)malloc(tam * sizeof(int));
if (vector == NULL) {
printf("Error al asignar memoria\n");
return 1;
}
printf("\nIngrese los %d numeros:\n", tam);
for (i = 0; i < tam; i++) {
printf("vec[%d]=", i);
scanf("%d", &vector[i]);
}
recorrerVector(vector, tam, 0, &numeroMayor, &sumaMayor);
printf("\nNumero con mayor suma de digitos pares: %d\n", numeroMayor);
printf("Suma de sus digitos pares: %d\n", sumaMayor);
free(vector);
return 0;
}