C no puede hacer esto?

Iniciado por FKT, 9 Septiembre 2015, 18:55 PM

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

FKT

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:

#include <stdio.h>
#include <stdlib.h>

int main(){

bool booleano;

printf("Introduce un numero y te dire si es positivo o negativo.\n");
printf("Numero: ");
scanf("%b",&booleano);

if(booleano == 0){
printf("Es negativo.\n");
}
else{
printf("Es positivo.\n");
}

return 0;
}


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

#include <stdio.h>
#include <stdlib.h>

int main(){

int siOno;

printf("Introduce un numero y te dire si es positivo o negativo.\n");
printf("Numero: ");
scanf("%i",&siOno);

if(siOno == 0){
printf("Es negativo.\n");
}
else{
printf("Es positivo.\n");
}

return 0;
}


De esta forma si funióna correctamente.
Solo hay 10 tipos de personas, las que saben binario y las que no.

someRandomCode

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.

FKT

Cita de: 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.


Entonces no se puede hacer lo que he echo en el ejemplo verdad??? :-(
Solo hay 10 tipos de personas, las que saben binario y las que no.

A.I.

#3
El problema no es de C, con el que puedes programar cualquier cosa que sea programable, si no de tu visión.  

if(numero < 0){
printf("Es negativo.\n");
}
else{
printf("Es positivo.\n");
}

someRandomCode

Cita de: FKT en  9 Septiembre 2015, 20:01 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

Deberias reemplazarlo por un int por ejemplo