Otro problema en un programa, no entiendo porque.

Iniciado por Anastacio, 20 Enero 2012, 22:14 PM

0 Miembros y 1 Visitante están viendo este tema.

Anastacio



# include <stdio.h>
# include <conio.h>


int main()

{
    int a;
    int b;
    int c;
    a = 0;
    b = 100;
    c = 1;
   
    printf("De un valor a la variable a\n");
    scanf("%d",&a);
   
    if(a <= b  and a >= c)
     { 
       printf("La variable a esta entre 1 y 100");
       getch();
     } 
     
   
    if(a >= b and a <= c)
     {   
       printf("La variable a no esta entre 1 y 100");
       getch();
     } 
       
   
}         
     


He empezado con if then else, y quise probar esto. Pero por alguna razon, me saltea el segundo if si no se cumple el primero, es decir si a es mayor a 100 y menor a 1, el programa se cierra. Si es menor a 100 y mayor a 1, funciona bien.

Porque???
You, stop to close my post, you were novice too!!!!!!!!!!!!

El_Java

Un nº mayor que 1 y menor que 100: 10 23 30 40 ...
Un nº menor que 1 y mayor que 100: (busca uno)

PD: cambia el segundo and por un or o por ||
PD2: algo más elegante, quita el segundo if entero y cambialo por else.

Anastacio

#2
Ya lo hice y anda perfecto, gracias

Una duda

Porque habia que usar or ahi???

Y con el else no me andaba, por eso puse if.

EI: juntando mensajes, la proxima vez borro.

Ahora estoy averiguando como hacer para que el programa solo acepte numeros. En wikipedia dice que hay especificadores para eso, y que d es el que sirve para eso. Pero eso no se refiere acaso a "%d"???. Si fuese asi, mi programa solo aceptaria numeros para la variable a, pero al contrario, tambien acepta letras.

Porque???
You, stop to close my post, you were novice too!!!!!!!!!!!!

El_Java

simplemente tienes que usar OR porque no tiene ningún sentido lo que habias puesto desde un punto de vista lógico, ningún numero puede ser menor que 1 y mayor que 100. O es menor que 1 O es mayor que 100.
Poner "%d" no significa que solo vaya a leer numeros, sino que la variable que se espera para guardar el dato leido tiene que ser un integer.

Y con else si funciona:
Código (cpp) [Seleccionar]
# include <stdio.h>
# include <conio.h>


int main()

{
    int a;
    int b;
    int c;
    a = 0;
    b = 100;
    c = 1;
   
    printf("De un valor a la variable a\n");
    scanf("%d",&a);
   
    if(a <= b  and a >= c)
     { 
       printf("La variable a esta entre 1 y 100");
       getch();
     } 
     
     else   
     {   
       printf("La variable a no esta entre 1 y 100");
       getch();
     } 
       
    return 0;
}         

Anastacio

You, stop to close my post, you were novice too!!!!!!!!!!!!

Xandrete

#5
Cita de: Anastacio en 20 Enero 2012, 22:53 PM

EI: juntando mensajes, la proxima vez borro.


En una ocasión se me fue la olla y publiqué dos posts seguidos en lugar de modificar el anterior. Pero tú llevas unos cuantos ya >.<

Al tanto, Anastacio, al tanto...