Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Anastacio en 20 Enero 2012, 22:14 pm



Título: Otro problema en un programa, no entiendo porque.
Publicado por: Anastacio en 20 Enero 2012, 22:14 pm
Código:

# 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???


Título: Re: Otro problema en un programa, no entiendo porque.
Publicado por: El_Java en 20 Enero 2012, 22:46 pm
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.


Título: Re: Otro problema en un programa, no entiendo porque.
Publicado por: Anastacio en 20 Enero 2012, 22:53 pm
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???


Título: Re: Otro problema en un programa, no entiendo porque.
Publicado por: El_Java en 20 Enero 2012, 23:56 pm
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
  1. # include <stdio.h>
  2. # include <conio.h>
  3.  
  4.  
  5. int main()
  6.  
  7. {
  8.    int a;
  9.    int b;
  10.    int c;
  11.    a = 0;
  12.    b = 100;
  13.    c = 1;
  14.  
  15.    printf("De un valor a la variable a\n");
  16.    scanf("%d",&a);
  17.  
  18.    if(a <= b  and a >= c)
  19.     {  
  20.       printf("La variable a esta entre 1 y 100");
  21.       getch();
  22.     }  
  23.  
  24.     else    
  25.     {    
  26.       printf("La variable a no esta entre 1 y 100");
  27.       getch();
  28.     }  
  29.  
  30.    return 0;
  31. }          


Título: Re: Otro problema en un programa, no entiendo porque.
Publicado por: Anastacio en 21 Enero 2012, 01:56 am
que tonto soy, gracias!!!


Título: Re: Otro problema en un programa, no entiendo porque.
Publicado por: Xandrete en 21 Enero 2012, 02:38 am

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...