PDA

Ver la versión completa : Ayuda con condiciones en C - Juk



Juk
18/07/2004, 10:20
Tengo que hacer una condición if para que según se pulse una tecla u otra me haga una cosa u otra.

He probado con getch, con cin y no soy capaz, ¿alguna sugerencia?

Gaijin
18/07/2004, 10:28
prueba con esto...


int op=0;
printf("ELECCION (1,2,3,0): ");
scanf ("%d",&op);

switch(op){
case 1:bla bla bla; break;
case 2: tralari tralara; break;
...
}

luego tendrías que hacerte el control para que solo te aceptara los valores que tu quieras y tal y cual.

Espero que te sirva.

Juk
18/07/2004, 10:33
gracias, voy haber si así puedo, es que con if no habia manera

BeaR
18/07/2004, 10:50
O con éste if:

main{

int numero;

printf("Mete un número , maxote x'D");
scanf("%d",&numero);

if(numero>=10)
printf("El número es mayor o iwal que 10");
else
printf("El número es menor que 10");

}

Recuerda que para poner varias instrucciones en un IF tienes ke acotarlo con {} y con los else iwal también.

Ejemplo:

if(numero>10)
{
printf("El número es mayor que 10");
printf("ésta es otro printf xq io lo valgo:D");
}
else
printf("El número es menor que 10");

Salu2 y suerte :brindis: :musico:

theNestruo
18/07/2004, 14:35
Yo te sugiero lo siguiente:



switch (getch() ) {
case 'a':
case 'A':
/* Haz algo relacionado con la A */
break;

case 'b':
case 'B':
/* Haz algo relacionado con la B */
break;

/* ... */

default:
/* Haz lo que corresponda a ninguna de las teclas anteriores */
/* O a ninguna tecla, directamente */
break;
}


Edito: y si necesitas conservar la tecla pulsada para después (por si la utilizas para comprobar algo, no sé), cambia la primera línea por esto:



char c=0x00; /* Inicializamos por seguridad */
switch (c=getch()) {
/*...*/
}

Juk
18/07/2004, 22:44
Gracias a todo, con switch parece que lo estoy consiguiendo, poco a poco pero voy tirando, solo tengo problemas porque me dice que case 2 está repetido, no se si será que no se pueden repetir los cases en distintos switches, yo creia que si....

theNestruo
19/07/2004, 11:13
Escrito originalmente por Juk
Gracias a todo, con switch parece que lo estoy consiguiendo, poco a poco pero voy tirando, solo tengo problemas porque me dice que case 2 está repetido, no se si será que no se pueden repetir los cases en distintos switches, yo creia que si....
Si te dice que "case 2" está repetido, posiblemente sea que está repetido en el mismo switch (mira a ver si es que usas dos constantes con el mismo valor o algo así). En distintos switchs sí que puedes utilizar los mismos valores que en otro (básicamente, porque los valores -las etiquetas- de los cases son constantes, luego ni son declaradas ni definidas, por lo que no pueden causar conflictos). Además, sería como pensar que no puedes hacer dos ifs iguales en todo el código (y piensa en la de veces que tienes que hacer "if (NULL!=puntero)" en cualquier programilla medio).

Por otra parte, te recomiendo ENCARECIDAMENTE que siempre que puedas utilices switchs en vez de ifs encadenados: los switchs se compilan en tabla de saltos, lo que implica una comparación y un salto por switch. Las cadenas de if...elseif...elseif... resultan en una comparativa y un salto por cada if, lo que puede llegar a representar una sobrecarga considerable en funciones llamadas muy a menudo.
Donde sí que te recomendaría ifs sería en cosas del estilo...


if ((a=>0) && (a<=2)) {
/* código */
} else if ((a>=8) && (a<=10)) {
/* código */
} else if ((a>=3) && (a<=7)) {
/* código */
} else {
/* fuera de rango */
}

..., donde con un switch tendrías que escribir mucho más...


switch (a) {
case 0:
case 1:
case 2:
/* código */
break;
case 3:
case 4:
case 5:
case 6:
case 7:
/* código */
break;
case 8:
case 9:
case 10:
/* código */
break;
default:
/* fuera de rango */
}

...y que además sería imposible de hacer si en vez de números enteros fueran de coma flotante (floats, doubles).

/// Another post by theNestruo's ClosedBook-like Explanations ///