Compare commits
No commits in common. "1d4938392144629fa0ea047a3308d19ff19b4859" and "d46366ede05c1421e6fbe45253c0a770c2852768" have entirely different histories.
1d49383921
...
d46366ede0
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,7 +8,6 @@
|
||||
# Visual Studio Code
|
||||
#
|
||||
.vscode/*
|
||||
*/.vscode/*
|
||||
.vscode/settings.json
|
||||
.vscode/tasks.json
|
||||
.vscode/launch.json
|
||||
|
@ -765,11 +765,11 @@ La posibilidad de crear las librerías facilita la reutilización del código y
|
||||
|
||||
2. Diseñad una acción que, dados un real que representa el saldo de una cuenta corriente y otro real que representa un cargo o imposición, actualice el saldo de la cuenta.
|
||||
|
||||
[Solución en lenguaje C](./soluciones_c/solucion2/saldo_cuenta.c)
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
3. Diseñad una función que calcule n (real) elevado a la potencia m (entero).
|
||||
|
||||
[Solución en lenguaje C](./soluciones_c/solucion3/potencia.c)
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
4. Diseñad una acción que, dados tres números reales que representan los coeficientes de una ecuación de segundo grado, retorne sus raíces, en caso de que existan. En caso contrario, que inicialice las raíces a 0. Recordad que dada la ecuación A * x2 + B * x + C las raíces se calculan:
|
||||
|
||||
@ -780,9 +780,12 @@ Si la expresión dentro de la raíz es negativa quiere decir que la ecuación no
|
||||
```
|
||||
function squareRoot(x: real): real;
|
||||
```
|
||||
Declarad las variables necesarias para llamar a la acción del ejercicio anterior e indicad cómo se llamaría.
|
||||
|
||||
[Solución en lenguaje C](./soluciones_c/solucion4/ecuacion_segundo_grado.c)
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
4b. Declarad las variables necesarias para llamar a la acción del ejercicio anterior e indicad cómo se llamaría.
|
||||
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
5. Para cada apartado siguiente, decidid si es mejor una acción o una función y definid su cabecera (solamente se pide la cabecera, no hay que diseñar ningún algoritmo).
|
||||
- Dadas las dimensiones de una pared (altura y anchura) y el precio de pintura por metro cuadrado, determinad el coste total de pintura necesario para pintar la pared.
|
||||
@ -790,9 +793,11 @@ Declarad las variables necesarias para llamar a la acción del ejercicio anterio
|
||||
- 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.
|
||||
|
||||
Declarad las variables necesarias para llamar a las acciones del ejercicio anterior e indicad cómo se llamarían.
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
[Solución en lenguaje C](./soluciones_c/solucion5/calculos_varios.c) (He añadido algunos extras para jugar)
|
||||
5b. Declarad las variables necesarias para llamar a las acciones del ejercicio anterior e indicad cómo se llamarían.
|
||||
|
||||
[Solución en lenguaje C]()
|
||||
|
||||
|
||||
### 12.10 Soluciones en lenguaje algorítmico
|
||||
@ -920,404 +925,31 @@ algorithm main
|
||||
writeReal(potencia(base, exponente));
|
||||
|
||||
end algorithm
|
||||
|
||||
```
|
||||
|
||||
4. Solución
|
||||
|
||||
```alg
|
||||
function squareRoot(x: real): real
|
||||
var
|
||||
estimacion, epsilon: real;
|
||||
end var
|
||||
|
||||
estimacion:= x / 2.0;
|
||||
epsilon:= 0.0001;
|
||||
```
|
||||
|
||||
while (((estimacion * estimacion - x) > epsilon) or (x - estimacion * estimacion) > epsilon) do
|
||||
estimacion:= (estimacion + x / estimacion) / 2.0;
|
||||
end while
|
||||
4b. Solución
|
||||
|
||||
return estimacion;
|
||||
```alg
|
||||
|
||||
end function
|
||||
|
||||
action calcularRaices(in A: real, in B: real, in C: real, out raiz1: real, out raiz2: real)
|
||||
var
|
||||
discriminante: real;
|
||||
end var
|
||||
|
||||
discriminante:= B * B - 4 * A * C;
|
||||
|
||||
if discriminante >= 0 then
|
||||
var
|
||||
raiz_discriminante: real;
|
||||
end var
|
||||
|
||||
raiz_discriminante:= squareRoot(discriminante);
|
||||
|
||||
raiz1:= (-B + raiz_discriminante) / (2 * A);
|
||||
raiz2:= (-B - raiz_discriminante) / (2 * A);
|
||||
else
|
||||
raiz1:= 0;
|
||||
raiz2:= 0;
|
||||
end if
|
||||
|
||||
end action
|
||||
|
||||
algorithm main
|
||||
var
|
||||
coeficiente_A, coeficiente_B, coeficiente_C, raiz1, raiz2: real;
|
||||
end var
|
||||
|
||||
writeString("Introduce los coeficientes de la ecuación de segundo grado.");
|
||||
writeString("A: ");
|
||||
coeficiente_A:= readReal();
|
||||
|
||||
writeString("B: ");
|
||||
coeficiente_B:= readReal();
|
||||
|
||||
writeString("C: ");
|
||||
coeficiente_C:= readReal();
|
||||
|
||||
calcularRaices(coeficiente_A, coeficiente_B, coeficiente_C, raiz1, raiz2);
|
||||
|
||||
writeString("Las raíces son: ");
|
||||
writeReal(raiz1);
|
||||
writeString(" y ");
|
||||
writeReal(raiz2);
|
||||
|
||||
end algorithm
|
||||
```
|
||||
|
||||
5. Solución
|
||||
|
||||
En C:
|
||||
```alg
|
||||
|
||||
```c
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// Funció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 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)
|
||||
{
|
||||
if (*a != 0 && *b != 0)
|
||||
{
|
||||
int 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;
|
||||
|
||||
for (int i = 1; i <= n; i++)
|
||||
{
|
||||
if (n % i == 0)
|
||||
{
|
||||
suma += i;
|
||||
}
|
||||
}
|
||||
|
||||
return suma;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
```
|
||||
|
||||
En lenguaje algorítmico:
|
||||
5b. Solución
|
||||
|
||||
```alg
|
||||
function calcularCostePintura(altura: real, anchura: real, precio_pintura: real): real
|
||||
return altura * anchura * precio_pintura;
|
||||
end function
|
||||
|
||||
action calcularConsumoAgua(inout consumo_actual: real, inout meses_consumo_actual: integer, inout ano_consumo_actual: integer)
|
||||
var
|
||||
consumo_mes: real;
|
||||
meses_a_introducir: integer;
|
||||
end var
|
||||
|
||||
writeString("¿Cuántos meses quieres introducir? ");
|
||||
meses_a_introducir:= readInteger();
|
||||
|
||||
for i:= 1 to meses_a_introducir do
|
||||
if meses_consumo_actual = 12 then
|
||||
meses_consumo_actual:= 1;
|
||||
ano_consumo_actual:= ano_consumo_actual + 1;
|
||||
else
|
||||
meses_consumo_actual:= meses_consumo_actual + 1;
|
||||
end if
|
||||
|
||||
writeString("Introduce el consumo de agua del mes ");
|
||||
writeString(meses_consumo_actual);
|
||||
writeString(": ");
|
||||
readReal(consumo_mes);
|
||||
consumo_actual:= consumo_actual + consumo_mes;
|
||||
end for
|
||||
|
||||
end action
|
||||
|
||||
function calcularMesString(mes: integer): string
|
||||
var
|
||||
meses: array[1..12] of string;
|
||||
end var
|
||||
|
||||
meses[1]:= "Enero";
|
||||
meses[2]:= "Febrero";
|
||||
meses[3]:= "Marzo";
|
||||
meses[4]:= "Abril";
|
||||
meses[5]:= "Mayo";
|
||||
meses[6]:= "Junio";
|
||||
meses[7]:= "Julio";
|
||||
meses[8]:= "Agosto";
|
||||
meses[9]:= "Septiembre";
|
||||
meses[10]:= "Octubre";
|
||||
meses[11]:= "Noviembre";
|
||||
meses[12]:= "Diciembre";
|
||||
|
||||
return meses[mes];
|
||||
|
||||
end function
|
||||
|
||||
action intercambiarValores(inout a: integer, inout b: integer)
|
||||
var
|
||||
temp: integer;
|
||||
end var
|
||||
|
||||
if a ≠ 0 and b ≠ 0 then
|
||||
temp:= a;
|
||||
a:= b;
|
||||
b:= temp;
|
||||
end if
|
||||
|
||||
end action
|
||||
|
||||
function sumaDivisores(n: integer): integer
|
||||
var
|
||||
suma, i: integer;
|
||||
end var
|
||||
|
||||
suma:= 0;
|
||||
|
||||
for i:= 1 to n do
|
||||
if n mod i = 0 then
|
||||
suma:= suma + i;
|
||||
end if
|
||||
end for
|
||||
|
||||
return suma;
|
||||
|
||||
end function
|
||||
|
||||
algorithm main
|
||||
var
|
||||
opcion: integer;
|
||||
consumo_actual: real;
|
||||
meses_consumo_actual, ano_consumo_actual: integer;
|
||||
end var
|
||||
|
||||
consumo_actual:= 60;
|
||||
meses_consumo_actual:= 6;
|
||||
ano_consumo_actual:= 2021;
|
||||
|
||||
repeat
|
||||
writeString("[+] Elige una opción:");
|
||||
writeString("1. Calcular el coste total de pintura necesario para pintar una pared");
|
||||
writeString("2. Calcular el consumo total de agua acumulado");
|
||||
writeString("3. Intercambiar los valores de dos números enteros");
|
||||
writeString("4. Calcular la suma de los divisores de un número entero");
|
||||
writeString("5. Salir");
|
||||
writeString("> ");
|
||||
readInteger(opcion);
|
||||
|
||||
case opcion of
|
||||
1:
|
||||
var
|
||||
altura, anchura, precio_pintura: real;
|
||||
end var
|
||||
|
||||
writeString("[+] Introduce la altura de la pared: ");
|
||||
readReal(altura);
|
||||
writeString("[+] Introduce la anchura de la pared: ");
|
||||
readReal(anchura);
|
||||
writeString("[+] Introduce el precio de la pintura por metro cuadrado: ");
|
||||
readReal(precio_pintura);
|
||||
|
||||
writeString("[+] El coste total de pintura necesario para pintar la pared es de ");
|
||||
writeReal(calcularCostePintura(altura, anchura, precio_pintura));
|
||||
writeString(" euros");
|
||||
|
||||
2:
|
||||
calcularConsumoAgua(consumo_actual, meses_consumo_actual, ano_consumo_actual);
|
||||
writeString("[+] El consumo total de agua acumulado hasta ");
|
||||
writeString(calcularMesString(meses_consumo_actual));
|
||||
writeString(" del año ");
|
||||
writeInteger(ano_consumo_actual);
|
||||
writeString(" es de ");
|
||||
writeReal(consumo_actual);
|
||||
writeString(" litros");
|
||||
|
||||
3:
|
||||
var
|
||||
num1, num2: integer;
|
||||
end var
|
||||
|
||||
writeString("[+] Introduce el primer número entero: ");
|
||||
readInteger(num1);
|
||||
writeString("[+] Introduce el segundo número entero: ");
|
||||
readInteger(num2);
|
||||
|
||||
intercambiarValores(num1, num2);
|
||||
writeString("[+] Los valores intercambiados son: ");
|
||||
writeInteger(num1);
|
||||
writeString(" y ");
|
||||
writeInteger(num2);
|
||||
|
||||
4:
|
||||
var
|
||||
numero: integer;
|
||||
end var
|
||||
|
||||
writeString("[+] Introduce un número entero: ");
|
||||
readInteger(numero);
|
||||
|
||||
writeString("[+] La suma de los divisores de ");
|
||||
writeInteger(numero);
|
||||
writeString(" es: ");
|
||||
writeInteger(sumaDivisores(numero));
|
||||
|
||||
5:
|
||||
writeString("[!] Saliendo...");
|
||||
|
||||
otherwise
|
||||
writeString("[!] Opción no válida");
|
||||
|
||||
end case
|
||||
|
||||
until opcion = 5
|
||||
|
||||
end algorithm
|
||||
```
|
||||
|
||||
|
||||
|
Binary file not shown.
@ -1,71 +0,0 @@
|
||||
/*
|
||||
Acción que, dados tres números reales que representan los coeficientes de una
|
||||
ecuación de segundo grado, retorne sus raíces, en caso de que existan.
|
||||
|
||||
En caso contrario, que inicialice las raíces a 0.
|
||||
|
||||
Recordad que dada la ecuación A * x2 + B * x + C las raíces se calculan:
|
||||
|
||||
```
|
||||
x1 = (-B + sqrt(B2 - 4 * A * C)) / (2 * A)
|
||||
```
|
||||
|
||||
Si la expresión dentro de la raíz es negativa quiere decir
|
||||
que la ecuación no tiene raíces.
|
||||
|
||||
Podéis suponer que la función raíz cuadrada está ya definida y su cabecera es:
|
||||
|
||||
```
|
||||
function squareRoot(x: real): real;
|
||||
```
|
||||
Declarad las variables necesarias para llamar a la acción anterior
|
||||
e indicad cómo se llamaría.
|
||||
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Función para calcular la raíz cuadrada utilizando el método de Newton
|
||||
float squareRoot(float x) {
|
||||
float estimacion = x / 2.0; // Estimación inicial
|
||||
float epsilon = 0.0001; // Precisión deseada
|
||||
|
||||
while ((estimacion * estimacion - x) > epsilon || (x - estimacion * estimacion) > epsilon) {
|
||||
estimacion = (estimacion + x / estimacion) / 2.0;
|
||||
}
|
||||
|
||||
return estimacion;
|
||||
}
|
||||
|
||||
// Función para calcular las raíces de una ecuación de segundo grado
|
||||
void calcularRaices(float A, float B, float C, float *raiz1, float *raiz2) {
|
||||
float discriminante = B * B - 4 * A * C;
|
||||
|
||||
if (discriminante >= 0) {
|
||||
float raiz_discriminante = squareRoot(discriminante);
|
||||
*raiz1 = (-B + raiz_discriminante) / (2 * A);
|
||||
*raiz2 = (-B - raiz_discriminante) / (2 * A);
|
||||
} else {
|
||||
*raiz1 = 0;
|
||||
*raiz2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
float coeficiente_A, coeficiente_B, coeficiente_C, raiz1, raiz2;
|
||||
|
||||
printf("Introduce los coeficientes de la ecuacion de segundo grado.\nA: ");
|
||||
scanf("%f", &coeficiente_A);
|
||||
|
||||
printf("B: ");
|
||||
scanf("%f", &coeficiente_B);
|
||||
|
||||
printf("C: ");
|
||||
scanf("%f", &coeficiente_C);
|
||||
|
||||
calcularRaices(coeficiente_A, coeficiente_B, coeficiente_C, &raiz1, &raiz2);
|
||||
|
||||
printf("\nLas raices son: %.2f y %.2f\n\n", raiz1, raiz2);
|
||||
|
||||
return 0;
|
||||
}
|
Binary file not shown.
@ -1,169 +0,0 @@
|
||||
/* 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 <stdio.h>
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// Funció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 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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user