Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Anastacio en 21 Enero 2012, 01:45 am



Título: Problema con este programa, me aparece un mensaje de error.
Publicado por: Anastacio en 21 Enero 2012, 01:45 am
Tengo un problema con un programa que calcula signos zodiacales.

Código:
# include <stdio.h>
# include <conio.h>

int main()

{
    int a;
    int ACUARIO;
    int ACUARIO1;
    int Piscis;
    int Piscis1;
    int Aries;
    int Aries1;
    int Tauro;
    int Tauro1;
    int Geminis;
    int Geminis1;
    int Cancer;
    int Cancer1;
    int Leo;
    int Leo1;
    int Virgo;
    int Virgo1;
    int Libra;
    int Libra1;
    int Escorpio;
    int Escorpio1;
    int Sagitario;
    int Sagitario1;
    int Capricornio;
    int Capricornio1;
    int Capricornio2;
    int Capricornio3;
   
    a = 0;
    ACUARIO = 0121;
    ACUARIO1 = 0219;
    Piscis = 0220;
    Piscis1 = 0319;
    Aries = 0320;
    Aries1 = 0420;
    Tauro = 0421;
    Tauro1 = 0521;
    Geminis = 0522;
    Geminis1 = 0622;
    Cancer = 0623;
    Cancer1 = 0722;
    Leo = 0723;
    Leo1 = 0823;
    Virgo = 0824;
    Virgo1 = 0923;
    Libra = 0924;
    Libra1 = 1023;
    Escorpio = 1024;
    Escorpio1 = 1122;
    Sagitario = 1123;
    Sagitario1 = 1221;
    Capricornio = 1222;
    Capricornio1 = 1231;
    Capricornio2 = 0101;
    Capricornio3 = 0120;
   
    printf("Con este programa usted podra saber su signo zodiacal\n");
    printf("Ahora, de su mes y dia de nacimiento, colocando primero el mes, y luego el dia, sin separarlos\n");
    printf("Ejemplo: Si usted nacio el 10 de enero, usted colocara 0110.\n");
    scanf("%d",&a);
   
    if(a >= ACUARIO and a <= ACUARIO1)
    {
     printf("Tu signo zodiacal es Acuario");
     getch();
     return 0;
     }
    if(a >= Piscis and a <= Piscis1)
    {
         printf("Tu signo zodiacal es Piscis");
         getch();
         return 0;
    }
     if(a >= Aries and a <= Aries1)
     {
          printf("Tu signo zodiacal es Aries");
          getch();
          return 0;
     }
     if(a >= Tauro and a <= Tauro1)
     
     {
          printf("Tu signo zodiacal es Tauro");
          getch();
          return 0;
         
     }
     if(a >= Geminis and a <= Geminis1)
     {
          printf("Tu signo zodiacal es Geminis");
          getch();
          return 0;
     }
     if(a >= Cancer and a <= Cancer1)
     {
          printf("Tu signo Zodiacal es Cancer");
          getch();
          return 0;
     }
     if(a >= Leo and a <= Leo1)
     {
          printf("Tu signo zodiacal es Leo");
          getch();
          return 0;
     }
     if(a >= Virgo and a <= Virgo1)
     {
          printf("Tu signo zodiacal es Virgo");
          getch();
          return 0;
     }
     if(a >= Libra and a <= Libra1)
     {
          printf("Tu signo zodiacal es Libra");
          getch();
          return 0;
     }
     if(a >= Escorpio and a <= Escorpio1)
     {
          printf("Tu signo zodiacal es Escorpio");
          getch();
          return 0;
     }
     if(a >= Sagitario and a <= Sagitario1)
     {
          printf("Tu signo zodiacal es Sagitario");
          getch();
          return 0;
     }
     if(a >= Capricornio and a <= Capricornio1)
     {
          printf("Tu signo zodiacal es Capricornio");
          getch();
          return 0;
     }
     if (a >= Capricornio2 and a <= Capricornio3)
     {
          printf("Tu signo zodiacal es Capricornio");
          getch();
          return 0;
     }
}     


Con todas las constantes que estan ahi, me da mensaje de error a las que tienen numeros con 8 y 9. Me aparece este mensaje de error: invalid digit in octal constant.

Porque???


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: x64core en 21 Enero 2012, 01:52 am
por eso, porque para representar numeros en base 8 llega hasta ahí osea que
el numero maximo es 7 es igual que en hexadecimal, es 16 pero llega hasta F


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: rir3760 en 21 Enero 2012, 01:56 am
Porque en C las constantes numéricas enteras que inician con un cero se toman como base 8 y en esta base solo son validos los dígitos 0 a 7. Para eliminar ese error basta con eliminar el cero inicial.

Aparte de eso deberías eliminar el uso de la biblioteca conio de Borland. El porque de ello es explica en el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Por ultimo en tu programa los casos son exclusivos (no se puede ser de un signo y otro a la vez) y todas las sentencias de selección "if" terminan con:
Código
  1. return 0;
Eso lo debes colocar solo una vez, justo antes del final de la función principal.

Un saludo


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: seba123neo en 21 Enero 2012, 01:58 am
Ayudas o sugerencias - programa signo zodiaco (http://foro.elhacker.net/net/ayudas_o_sugerencias_programa_signo_zodiaco-t254997.0.html)


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: Anastacio en 21 Enero 2012, 02:02 am
Nunca se podria ser de un signo y otro a la vez. A que te refieres con eso??

Nota: No uso borland.

Ya acomode lo otro, gracias!!!!


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: BlackZeroX en 21 Enero 2012, 02:20 am
Como sabras los '0' a la izquierda de un numero no influyen... quitalos... que si no estaras haciendo valores OCTALES... jamas dejes 0 a la izquierda...

en C/C++ 015 es dinto de 15 ya que 015 esta en octal y 15 en decimal...

015 octal = 13 en decimal...

Dulces Lunas!¡.


Título: Re: Problema con este programa, me aparece un mensaje de error.
Publicado por: Anastacio en 21 Enero 2012, 03:25 am
Muchas gracias a todos.