Autor
|
Tema: [C] for loop y switch cases (Leído 2,214 veces)
|
edr89
Desconectado
Mensajes: 105
|
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.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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!. ..... ..
|
|
« Última modificación: 19 Mayo 2013, 13:32 pm por leosansan »
|
En línea
|
|
|
|
edr89
Desconectado
Mensajes: 105
|
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 ; Quiere decir que a la variable total_cal se le va a sumar la variable caloria?, Va a restarle el valor de cal a total_cal? Gracias y saludos!
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Quiere decir que a la variable total_cal se le va a sumar la variable caloria? 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.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Do Loop
Programación Visual Basic
|
stork32
|
6
|
2,999
|
22 Octubre 2008, 01:31 am
por seba123neo
|
|
|
[Autoit] Loop
Scripting
|
mubimeiquer
|
2
|
5,710
|
13 Febrero 2009, 16:36 pm
por gna08
|
|
|
Problema con loop while
« 1 2 »
Programación C/C++
|
miketru
|
10
|
6,401
|
11 Septiembre 2010, 05:41 am
por miketru
|
|
|
Ayuda por favor con un switch con 3 cases
Programación C/C++
|
suso teruel
|
3
|
2,699
|
10 Julio 2012, 20:24 pm
por suso teruel
|
|
|
Amigos puedo crear switch cases asi, por que tengo unos errores y no tengo ideas
Programación C/C++
|
Alejandro1195
|
1
|
2,566
|
18 Junio 2015, 11:40 am
por Alejandro1195
|
|