Es normal.
Observe la linea: if ( n == 1 ) {
n nunca le has asignado un valor.
Es mas...eso es una mala practica. Crear una variable e no darle un valor inicial aun que sea un 0 para tener control. Estas comparando el residuo de la memoria que hay en la variable n con 1, y a menos que algún programa buen samaritano te haya dejado un uno antes nunca vas a tener un 1 ahí.
Sin embargo si haces:
n=1;
if ( n == 1 ) {
//blablabla
}
...eso ya es otra cosa.
Observe linea a linea e intente prever que es lo que pasa.
Ademas ese problema es fácil de saber pero otros vas a tener que aprender a usar el debuguer si o si.
Dale un valor a ese n o quita lo de ahí.
Otra cosa que veo, el break debería estar fuera de if no dentro. Lo correcto seria:
Código C:
Ver original#include <stdio.h>
int main ( void ) {
int n, opcion;
printf ( "Ingresa el numero de la habitacion: " );
//Eso lo hago para dar un valor a n...lo puedes quitar después si quieres o cambia por 2,3,4....
n = 1; //solo puedes elegir 1 en el menú sino te va fallar las otras opciones n==2.... n==4... porque n vale uno n==1
switch ( opcion ) {
case 1:
if ( n == 1 ) {
printf ( "Habitacion 1: Tiene 2 camas y se encuentra en la primera planta\n" ); }
break;
case 2:
if ( n == 2 ) {
printf ( "Habitacion 2: Tiene 1 cama y se encuentra en la primera planta\n" ); }
break;
case 3:
if ( n == 3 ) {
printf ( "Habitacion 3: Tiene 3 camas y se encuentra en la segunda planta\n" ); }
break;
case 4:
if ( n == 4 ) {
printf ( "Habitacion 4: Tiene 2 camas y se encuentra en la segunda planta\n" ); }
break;
case 5:
if ( n == 5 ) {
printf ( "Habitacion 5: Tiene 1 cama y se encuentra en la tercera planta\n" ); }
break;
default:
printf ( "Error ingresa de nuevo" ); break;
}
return 0;
}
Observe los break fuera de las sentencias if.
Un truco que puedes usar es poner
printf("Dentro de case1"); dentro de
case 1 =D para saber si has entrado en ese caso. printf te sirve para dar una depurada chapucera pero efectiva y ver que camino ha tomado tu programa. Si has entrado a un if pon printf("dentro de if"); ....
Código C:
Ver originalswitch ( opcion ) {
case 1:
if ( n == 1 ) {
printf("Dentro de if.\nn vale 1\n"); printf ( "Habitacion 1: Tiene 2 camas y se encuentra en la primera planta\n" ); }
printf("No hemos entrado a if porque n no es igual que 1.\n"); break;
case 2:
...
Una vez que vea que el programa va como tu quieres les puedes quitar esas lineas o simplemente comentarlas con un //
Default también lleva el break;