El código compila y ejecuta pero por alguna razon me toma 1 y 2 como no validos
#include<stdio.h>
int main()
{
int respuesta, cal, total_cal, food, foodfor,loopcal=0;
printf("\t\tPrograma de calorias\n\n");
printf("1. Cuanto has comido hoy? \n");
printf("2. Indice de Masa Corporal \n");
printf(" Elige una opcion: ");
scanf("%c", &respuesta);
switch (respuesta)
{
case 1:
{
printf("Ingresa los datos de los alimentos.\n\n ");
printf("Cuantos alimentos comiste?: ");
scanf("%d",&food);
printf("Teclea las calorias de cada alimento: ");
for(foodfor = 0;foodfor<=food;foodfor++)
{
scanf("%d",&cal);
loopcal = (loopcal + cal);
total_cal = loopcal;
}
printf("Has comido %d calorias.",total_cal);
break;
}
case 2:
{
printf("Indice de Masa Corporal\n");
printf("Please Wait...\n");
break;
}
case 3:
{
printf("Adios!");
}
default:
{
while(respuesta!=1&&respuesta!=2&&respuesta!=3)
{
printf("Opcion no valida, intenta de nuevo\n");
scanf("%d",&respuesta);
}
}
}
return 0;
}
El primer caso te debe preguntar cuantos alimentos comiste y despues te pide ingresar las calorias de cada alimentos, si comí 10 tecleo 10 etc, al final te dice todo lo que consumiste. Empezó a fallar desde que agregue for() en el caso 1, lo releo y no encuentro la falla.
ayuda por favor.
El error principal es que tenías declarada la variable" respuesta" como int, mientras que cuando luego la escaneas y usas en los case lo haces como char.
El otro es que no tienes bien usada total_cal.
Mejor lo ves en el código corregido:
#include<stdio.h>
int main()
{
int cal, total_cal=0, food, foodfor;
char respuesta;
printf("\t\tPrograma de calorias\n\n");
printf("1. Cuanto has comido hoy? \n");
printf("2. Indice de Masa Corporal \n");
printf("3. Salir: \n");
do{
scanf(" %c", &respuesta);
switch (respuesta)
{
case '1':
{
printf("Ingresa los datos de los alimentos.\n\n ");
printf("Cuantos alimentos comiste?: ");
scanf("%d",&food);
printf("Teclea las calorias de cada alimento: ");
for(foodfor = 0;foodfor<food;foodfor++)
{
scanf("%d",&cal);
total_cal +=cal;
}
printf("Has comido %d calorias.",total_cal);
break;
}
case '2':
{
printf("Indice de Masa Corporal\n");
printf("Please Wait...\n");
break;
}
case '3':
{
printf("Adios!");
return 1;
}
default:
printf("Opcion no valida, intenta de nuevo\n");
}
}while(respuesta<'1'|| respuesta>'3');
return 0;
}
Saluditos!. ..... ..(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Cita de: leosansan en 19 Mayo 2013, 12:07 PM
El error principal es que tenías declarada la variable" respuesta" como int, mientras que cuando luego la escaneas y usas en los case lo haces como char.
El otro es que no tienes bien usada total_cal.
Cierto,
Int respuesta, y cuando lee scanf estacon %c ¬¬'
aun no llego a la parte de
do-while pero veo que la estructura es:
do
{
Sentencias
}
while(condicion);
en este caso while sí lleva fin de instruccion
; :o
total_cal +=cal
Quiere decir que a la variable total_cal se le va a sumar la variable caloria?,
total_cal -=cal
Va a restarle el valor de cal a total_cal?
Gracias y saludos!
Cita de: edr89 en 19 Mayo 2013, 22:33 PM
total_cal +=cal
Quiere decir que a la variable total_cal se le va a sumar la variable caloria?
total_cal -=cal
Va a restarle el valor de cal a total_cal?
Así es y lo mismo con * y /, es una forma como más "seria" o profesional de + - * / etc una cantidad a una variable, que siempre debe estar preinicilizada a cero, en general vamos.
Saluditos y me alegra haberte sido útil.(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)