Programación General > C/C++

 Re: Distinguir numeros positivos de numeros negativos

(1/1)

Arsys:
Pues eso, tengo que crear un programa con un if anidado que al introducir un número diga si es 0, negativo, o positivo y he escrito lo siguiente:


 
--- Citar ---#include <stdio.h>

int main(int argv, char **argc)

{
  int num;
  printf("Introduzca un numero: ");
  scanf("%d", &num);
 
  if(num!=0)
    {
      /*pongo como condición del if el "-" para indicar que el numero es negativo"*/
      if(num='-')printf("nEl numero es negativo.");
      else printf("nEl numero es positivo.");
    }
  else printf("nEl numero es 0.");
  printf("nn");
  system("pause");
}
--- Fin de la cita ---


Lo he revisado varias veces y en principio me parece que está bien escrito, sin embargo al introducir un numero positivo siempre dice que es negativo.

A ver si alguien sabe decirme donde está el error.

Saludos :hippi:

JuanK:
Tu dices:
 
--- Código: Text --- if(num='-') printf("nEl numero es negativo.");  Error1
  if(num='-')

para compara se usa el operador ==,  si utilizas  solo el = estas asignando, asi que a num le asignaste '-';

Error2

Asi no se comparan numeros, si comparas
  if(num=='-')

realmente estas comparando el varor de la variable entera num, con el valor ascii del caracter '-' es decir escibirlo asi es lo mismo que escribir esto:

  if(num==45)

Explicacion de tu resultado


 
--- Código: Text --- if(num='-')  printf("nEl numero es negativo.");else   printf("nEl numero es positivo.");  
lo primero dentro del if num='-' que como ya te dije seria asignar a num el valor 45, que es el ascii que corresponde al aracter '-', esta operacion siempre devuelve el valor de la asignacion por lo que devuelve 45, recuerda que un if entra por verdadero para cualquier valor diferente de 0, como devolvio 45 entonces entra por verdaero y hace esto:
 printf("nEl numero es negativo.");


Esa es la explicaion,  para compara como tulo necesitas , debes hacer:

 
--- Código: Text --- if(num !=0)...blablablaif(num >0)//es decir mayor que cero(positivo)...blablablaif(num <0)//o sea menor que cero (negativo).-..blablabla  
Logicamente tu arreglas el codigo,pero esta es la idea y la explicacion.

JuanK

Arsys:
Ya lo he conseguido arreglar, gracias :bravo:

Saludos :hippi:

Navegación

[0] Índice de Mensajes

Ir a la versión completa