Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: FKT en 9 Septiembre 2015, 18:55 pm



Título: C no puede hacer esto?
Publicado por: FKT en 9 Septiembre 2015, 18:55 pm
He echo este ejemplo sencillo porque he visto un ejercicio muy sencillo que decia que introduzcas un número y el rpograma dice si es positivo o negativo y me sorprende que C no pueda hacer esto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. bool booleano;
  7.  
  8. printf("Introduce un numero y te dire si es positivo o negativo.\n");
  9. printf("Numero: ");
  10. scanf("%b",&booleano);
  11.  
  12. if(booleano == 0){
  13. printf("Es negativo.\n");
  14. }
  15. else{
  16. printf("Es positivo.\n");
  17. }
  18.  
  19. return 0;
  20. }

Pensaba que podia escanear un booleano de forma que el (0 = negativo) y (>= 1 positivo) pensandolo ahora le veo un poco menos de coherencia o el problema quizás es que no se usa %b para asignar.
Seguramente me direis que yo mismo lo he dicho que es un boloeano y que solo puede ser true y false.

Aquí dejo el otro código que he echo de forma más "normal".

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. int siOno;
  7.  
  8. printf("Introduce un numero y te dire si es positivo o negativo.\n");
  9. printf("Numero: ");
  10. scanf("%i",&siOno);
  11.  
  12. if(siOno == 0){
  13. printf("Es negativo.\n");
  14. }
  15. else{
  16. printf("Es positivo.\n");
  17. }
  18.  
  19. return 0;
  20. }

De esta forma si funióna correctamente.


Título: Re: C no puede hacer esto?
Publicado por: someRandomCode en 9 Septiembre 2015, 19:22 pm
En C, no hay tipo boolean nativo, eso es de C++.
De otra forma, 0 falso, cualquier otra cosa verdadero. Sacando ciertos compiladores que hacen de los numeros negativos un negativo.


Título: Re: C no puede hacer esto?
Publicado por: FKT en 9 Septiembre 2015, 20:01 pm
En C, no hay tipo boolean nativo, eso es de C++.
De otra forma, 0 falso, cualquier otra cosa verdadero. Sacando ciertos compiladores que hacen de los numeros negativos un negativo.


Entonces no se puede hacer lo que he echo en el ejemplo verdad??? :-(


Título: Re: C no puede hacer esto?
Publicado por: A.I. en 9 Septiembre 2015, 20:28 pm
El problema no es de C, con el que puedes programar cualquier cosa que sea programable, si no de tu visión.  

Código
  1. if(numero < 0){
  2. printf("Es negativo.\n");
  3. }
  4. else{
  5. printf("Es positivo.\n");
  6. }


Título: Re: C no puede hacer esto?
Publicado por: someRandomCode en 9 Septiembre 2015, 21:00 pm

Entonces no se puede hacer lo que he echo en el ejemplo verdad??? :-(


Si se puede, no = 0, si = cualquier cosa que no sea cero.


Ademas, no podes usar en scanf el %b, los modificadores validos los podes ver, por ejemplo, aca (http://www.cplusplus.com/reference/cstdio/scanf)

Deberias reemplazarlo por un int por ejemplo