Tengo un problema con un programa que calcula signos zodiacales.
# 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???
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
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:
getch();
return 0;
Eso lo debes colocar solo una vez, justo antes del final de la función principal.
Un saludo
Ayudas o sugerencias - programa signo zodiaco (http://foro.elhacker.net/net/ayudas_o_sugerencias_programa_signo_zodiaco-t254997.0.html)
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!!!!
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!¡.
Muchas gracias a todos.