CCCPaste

EDA Lab #10-2

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