227 lines
6.4 KiB
C
227 lines
6.4 KiB
C
#include<stdio.h>
|
|
#include<stdlib.h> // Se suele emplear para memoria dinámica
|
|
|
|
/*
|
|
|
|
Ejercicio 3:
|
|
|
|
Miguel quiere controlar cuantos kilómetros ha corrido haciendo footing esta semana.
|
|
La semana asumimos tiene siete días.
|
|
Almacenará los kilómetros (número real) en un array de siete posiciones.
|
|
Al comienzo del programa se le pedirá a Miguel que introduzca cuántos kilómetros
|
|
ha recorrido cada día. A continuación se mostrará un menú con las siguientes opciones:
|
|
|
|
1) Mostrar la información de todos los días y todos los kilómetros recorridos cada día
|
|
(mostrar el array)
|
|
|
|
2) Pedirle a Miguel un día (entre 0 y 6, no puede ser cualquier otro valor,
|
|
si se trata de un valor no válido se repetirá le pregunta)
|
|
y se mostrarán los kms recorridos ese día.
|
|
|
|
3) Pedirle a Miguel un número determinado de kilómetros y mostrar cuántos días ha superado
|
|
esa cantidad de kms.
|
|
|
|
4) Mostrar el número de kms recorridos en total durante la semana (suma)
|
|
|
|
5) Mostrar la media de kms por día durante la semana (media de los números del array)
|
|
|
|
6) Salir
|
|
|
|
El menú se repetirá hasta que Miguel decida salir.
|
|
|
|
*/
|
|
|
|
#define TAM 8
|
|
|
|
//prototipos
|
|
void opcion2 (int tablaKM[]);
|
|
int opcion4(int tablaKM[]);
|
|
|
|
int main(){
|
|
|
|
|
|
/* Variables */
|
|
int tablaKM[TAM];
|
|
int i, menu, j, km, k;
|
|
int dia=1;
|
|
int aviso=0;
|
|
int total=0;
|
|
float media;
|
|
|
|
|
|
/* KM de la semana */
|
|
printf("\n_____________\n\n¡HOLA MIGUEL!\n_____________\n");
|
|
printf("\nIntroduce los km de esta semana: \n");
|
|
|
|
for (i=1; i<TAM; i++){
|
|
printf("Día %d: ", i);
|
|
scanf("%d", &tablaKM[i]);
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
|
|
do{
|
|
|
|
/* Elegir opción */
|
|
|
|
printf("\n+++++++++++++++++\n+\tMENÚ\t+\n+++++++++++++++++\n");
|
|
printf("\n1 Mostrar la información de todos los días y todos los kilómetros recorridos cada día.");
|
|
printf("\n2 Mostrar los km recorridos un día concreto.");
|
|
printf("\n3 Mostrar los días que se han superado x km");
|
|
printf("\n4 Mostrar el número de kms recorridos en total durante la semana.");
|
|
printf("\n5 Mostrar la media de kms por día durante la semana.");
|
|
printf("\n6 Salir\n");
|
|
|
|
printf("\nIntroduce una opción del 1 al 6: ");
|
|
fflush(stdin);
|
|
scanf("%d", &menu);
|
|
|
|
/* Condicional case para seleccionar el número */
|
|
|
|
|
|
switch (menu) {
|
|
case 1:
|
|
printf("\n##################################################\n");
|
|
printf("\nLos km recorridos esta semana son: \n");
|
|
printf("L\tM\tX\tJ\tV\tS\tD\n");
|
|
for(i=1; i<TAM; i++){
|
|
printf("%d\t", tablaKM[i]);
|
|
}
|
|
printf("\n\n##################################################\n");
|
|
break;
|
|
|
|
case 2:
|
|
|
|
opcion2(tablaKM); //en la llamada no ponemos tipos, solo nombres
|
|
break;
|
|
|
|
case 3:
|
|
|
|
printf("\nDime cuantos km quieres saber si has superado: ");
|
|
scanf("%d", &km);
|
|
|
|
printf("\n######################\n");
|
|
printf("\nSuperaste los %d km:", km);
|
|
|
|
dia=1;
|
|
for (j=1; j<TAM; j++){
|
|
|
|
aviso=0; // El flag es mejor cambiarlo justo antes del bucle
|
|
if(km<=tablaKM[j]) {
|
|
aviso=1;
|
|
}
|
|
|
|
if(aviso==1){
|
|
printf("\n - El dia %d con %d km.", dia, tablaKM[j]);
|
|
aviso=0;
|
|
}
|
|
dia=dia+1;
|
|
}
|
|
|
|
printf("\n\n######################\n");
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
total=opcion4(tablaKM);
|
|
|
|
printf("\n######################\n");
|
|
printf("\nEsta semana has hecho %d km.\n\n!ENHORABUENA MIGUEL! ", total);
|
|
printf("\n\n######################\n");
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
total=0;
|
|
for (k=1; k<TAM; k++){
|
|
total=total+tablaKM[k];
|
|
}
|
|
|
|
media=(float)total/7;
|
|
|
|
printf("\n######################\n");
|
|
printf("\nEsta semana tienes %.2f km de media.\n\n!ERES UN CRACK MIGUEL! ", media);
|
|
printf("\n\n######################\n");
|
|
|
|
break;
|
|
|
|
case 6:
|
|
printf("\nAdios Miguel!");
|
|
break;
|
|
|
|
default:
|
|
printf("\nNo es un valor correcto\n\n");
|
|
}
|
|
}while ( menu != 6 );
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
//a partir de auqí ponemos otras funciones
|
|
void opcion2 (int tablaKM[]){
|
|
int busca;
|
|
|
|
do{
|
|
printf("\nDime el día del que quieres saber los km: ");
|
|
fflush(stdin);
|
|
scanf("%d", &busca);
|
|
//busca asegurate que solo puede tener valores entre 1 y 7
|
|
|
|
if(busca<1 || busca>7){
|
|
printf("\nPájaro, ese valor no es correcto, tiene que ser entre 1 y 7 inclusive");
|
|
}
|
|
|
|
}while(busca<1 || busca>7);
|
|
|
|
printf("\n##################################\n");
|
|
|
|
switch (busca) {
|
|
case 1:
|
|
printf("\nEl lunes hiciste %d km \t\t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 2:
|
|
printf("\nEl martes hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 3:
|
|
printf("\nEl miércoles hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 4:
|
|
printf("\nEl jueves hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 5:
|
|
printf("\nEl viernes hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 6:
|
|
printf("\nEl sábado hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
case 7:
|
|
printf("\nEl domingo hiciste %d km \t:)\n",tablaKM[busca]);
|
|
break;
|
|
|
|
default:
|
|
printf("\nNo es un valor correcto\n\n");
|
|
}
|
|
|
|
printf("\n##################################\n");
|
|
}
|
|
|
|
int opcion4(int tablaKM[]){
|
|
int totalKM;
|
|
int k;
|
|
totalKM=0;
|
|
for (k=1; k<TAM; k++){
|
|
totalKM=totalKM+tablaKM[k];
|
|
}
|
|
return totalKM;
|
|
} |