elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] for loop y switch cases
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] for loop y switch cases  (Leído 1,988 veces)
edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
[C] for loop y switch cases
« en: 19 Mayo 2013, 08:58 am »

El código compila y ejecuta pero por alguna razon me toma 1 y 2 como no validos
Código:
#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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: [C] for loop y switch cases
« Respuesta #1 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.

Mejor lo ves en el código corregido:


Código
  1. #include<stdio.h>
  2. int main()
  3. {
  4.    int cal, total_cal=0, food, foodfor;
  5.    char respuesta;
  6.    printf("\t\tPrograma de calorias\n\n");
  7.    printf("1. Cuanto has comido hoy? \n");
  8.    printf("2. Indice de Masa Corporal \n");
  9.    printf("3. Salir: \n");
  10.    do{
  11.            scanf(" %c", &respuesta);
  12.    switch (respuesta)
  13.            {
  14.                case '1':
  15.                    {
  16.                        printf("Ingresa los datos de los alimentos.\n\n ");
  17.                        printf("Cuantos alimentos comiste?: ");
  18.                        scanf("%d",&food);
  19.                        printf("Teclea las calorias de cada alimento: ");
  20.                        for(foodfor = 0;foodfor<food;foodfor++)
  21.                            {
  22.                                scanf("%d",&cal);
  23.                                total_cal +=cal;
  24.                            }
  25.                        printf("Has comido %d calorias.",total_cal);
  26.                        break;
  27.                    }
  28.                case '2':
  29.                    {
  30.                        printf("Indice de Masa Corporal\n");
  31.                        printf("Please Wait...\n");
  32.                        break;
  33.                    }
  34.                case '3':
  35.                    {
  36.                        printf("Adios!");
  37.                        return 1;
  38.                    }
  39.                default:
  40.                    printf("Opcion no valida, intenta de nuevo\n");
  41.            }
  42.    }while(respuesta<'1'|| respuesta>'3');
  43.    return 0;
  44. }
  45.  

Saluditos!. ..... ..


« Última modificación: 19 Mayo 2013, 13:32 pm por leosansan » En línea

edr89

Desconectado Desconectado

Mensajes: 105


Ver Perfil
Re: [C] for loop y switch cases
« Respuesta #2 en: 19 Mayo 2013, 22:33 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:

Código:
do
{
  Sentencias
}
while(condicion);

en este caso while sí lleva fin de instruccion ;  :o

Código:
total_cal +=cal

Quiere decir que a la variable total_cal se le va a sumar la variable caloria?,

Código:
total_cal -=cal
Va a restarle el valor de cal a total_cal?

Gracias y saludos!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: [C] for loop y switch cases
« Respuesta #3 en: 19 Mayo 2013, 22:55 pm »


Código:
total_cal +=cal

Quiere decir que a la variable total_cal se le va a sumar la variable caloria?

Código:
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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Do Loop
Programación Visual Basic
stork32 6 2,801 Último mensaje 22 Octubre 2008, 01:31 am
por seba123neo
[Autoit] Loop
Scripting
mubimeiquer 2 5,454 Último mensaje 13 Febrero 2009, 16:36 pm
por gna08
Problema con loop while « 1 2 »
Programación C/C++
miketru 10 5,899 Último mensaje 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,489 Último mensaje 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,061 Último mensaje 18 Junio 2015, 11:40 am
por Alejandro1195
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines