/* Para cada apartado siguiente escoger si es mejor una acción o una función y definir su cabecera. - Dadas las dimensiones de una pared (altura y anchura) y el precio de pintura por metro cuadrado, determinar el coste total de pintura necesario para pintar la pared. - Dado el consumo total de agua acumulado desde el mes de enero hasta junio (ambos incluidos), leer por el canal estándar el consumo del resto de meses (desde julio a diciembre, ambos incluidos), y retornar acumulado al total del consumo de los 6 primeros meses. - Dados dos números enteros intercambiad los valores de ambas variables siempre que ambas sean diferentes de cero. - Dado un entero retornad la suma de sus divisores. Declarar las variables necesarias para llamar a las acciones del ejercicio anterior e indicar cómo se llamarían. */ #include // Función para calcular el coste total de pintura necesario para pintar una pared float calcularCostePintura(float altura, float anchura, float precio_pintura) { return altura * anchura * precio_pintura; } // Acción para calcular el consumo total de agua acumulado float calcularConsumoAgua(float *consumo_actual, int *meses_consumo_actual, int *ano_consumo_actual) { float consumo_mes; int meses_a_introducir; printf("¿Cuántos meses quieres introducir? "); scanf("%d", &meses_a_introducir); for (int i = 1; i <= meses_a_introducir; i++) { if (*meses_consumo_actual == 12) { *meses_consumo_actual = 1; (*ano_consumo_actual)++; } else { (*meses_consumo_actual)++; } printf("Introduce el consumo de agua del mes %d: ", *meses_consumo_actual); scanf("%f", &consumo_mes); *consumo_actual += consumo_mes; } } // Función (con puntero) para obtener el nombre del mes char *calcularMesString(int mes) { char *meses[] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}; return meses[mes - 1]; } // Acción para intercambiar los valores de dos números enteros void intercambiarValores(int *a, int *b) { int temp; if (*a != 0 && *b != 0) { temp = *a; *a = *b; *b = temp; } } // Función para calcular la suma de los divisores de un número entero int sumaDivisores(int n) { int suma = 0; int i; for (i = 1; i <= n; i++) { if (n % i == 0) { suma += i; } } return suma; } // Función principal int main() { int opcion; float consumo_actual = 60; int meses_consumo_actual = 6; int ano_consumo_actual = 2021; do { printf("\n[+] Elige una opción:\n"); printf("1. Calcular el coste total de pintura necesario para pintar una pared\n"); printf("2. Calcular el consumo total de agua acumulado\n"); printf("3. Intercambiar los valores de dos números enteros\n"); printf("4. Calcular la suma de los divisores de un número entero\n"); printf("5. Salir\n\n"); printf("> "); scanf("%d", &opcion); switch (opcion) { case 1: { float altura, anchura, precio_pintura; printf("\n[+] Introduce la altura de la pared: "); scanf("%f", &altura); printf("[+] Introduce la anchura de la pared: "); scanf("%f", &anchura); printf("[+] Introduce el precio de la pintura por metro cuadrado: "); scanf("%f", &precio_pintura); float coste_pintura = calcularCostePintura(altura, anchura, precio_pintura); printf("\n[+] El coste total de pintura necesario para pintar la pared es de %.2f euros\n", coste_pintura); break; } case 2: { calcularConsumoAgua(&consumo_actual, &meses_consumo_actual, &ano_consumo_actual); char *nombre_mes = calcularMesString(meses_consumo_actual); printf("\n[+] El consumo total de agua acumulado hasta %s del año %d es de %.2f litros\n", nombre_mes, ano_consumo_actual, consumo_actual); break; } case 3: { int num1, num2; printf("\n[+] Introduce el primer número entero: "); scanf("%d", &num1); printf("[+] Introduce el segundo número entero: "); scanf("%d", &num2); intercambiarValores(&num1, &num2); printf("\n[+] Los valores intercambiados son: %d y %d\n", num1, num2); break; } case 4: { int numero; printf("[+] Introduce un número entero: "); scanf("%d", &numero); int suma_divisores = sumaDivisores(numero); printf("\n[+] La suma de los divisores de %d es: %d\n", numero, suma_divisores); break; } case 5: printf("\n[!] Saliendo...\n"); break; default: printf("[!] Opción no válida\n"); break; } } while (opcion != 5); return 0; }