Comprobar que una fecha (ej: 22/03) está dentro de un rango (ej: [21/03 - 19/04]) tiene alguna complicación.
Hola, primero que nada debes saber que dia y mes comienza y termina aries, por ejemplo:
Aries comienza el 21/03 y termina el 19/04.
Con esos datos ya puedes hacer los if's
Ejemplo:
si ((dia >= 21) y (mes >= 3) y (dia <= 19) y (mes <= 4))
imprimir ("Tu signo es aries")
Luego ya puedes continuar con los otros if's
Salu2.
Ahí se puede ver el problema. Si se cumple la primera condición (dia >= 21) es
imposible que se cumpla la tercera (dia <= 19). Esas dos condiciones son mutuamente excluyentes.
Una solución es calcular la fecha (fecha = día + mes) en base al número de días que han pasado desde el 1 de enero.
Para hacer esto podrías tener un array (una lista) donde cada índice i indica el número de días que tiene el mes i+1. Vamos a código que se ve más fácil:
#include <iostream> // La cabecera de entrada/salida estandar de C++ es <iostream>, no <iostream.h>
using namespace std;
const int NUM_MESES = 12; // Longitud del array con los dias de cada mes (12 meses)
int calcularDiasAnuales(int dia, int mes) {
// El indice i indica el numero de dias del mes (i+1) => i = 0 -> dias del mes 1 (enero) -> diasMes[0] = 31
int diasMes[NUM_MESES] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int diasAnuales = 0; // Se puede inicializar aqui con: 'diasAnuales = dia' pero asi es mas visual
for(int i = 0; i < mes - 1; ++i)
diasAnuales += diasMes[i];
diasAnuales += dia;
return diasAnuales;
}
int main() {
int diasMes[NUM_MESES] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dia = 22;
int mes = 3; // Marzo
int diaAnual = calcularDiaAnual(dia, mes);
cout << "El dia " << dia << "/" << mes << " es el dia " << diaAnual << " contando desde el 01/01" << endl;
}
Usando este sistema te será más sencillo poder comparar cuando una fecha es mayor o menor que otra.
Si te das cuenta, tal y como está diseñado ahora mismo, sólo sirve para fechas que se encuentren en el mismo año natural.
Ahora vamos a las correcciones que alguna cosilla tiene tu código:
- Como he dicho en el código: La cabecera correcta es <iostream>, no <iostream.h>
- No utilices la función getche() de <conio.h>. Esta librería no es estándar y es preferible no usarla nunca. Utiliza la función cin.get() que pertenece a <iostream>.
- No estás utilizando la cabecera <math.h> (ni la vas a necesitar).
- Las condiciones que estás utilizando no existen. Tienes que utilizar las variables 'd' y 'm' (que deberías llamar 'dia' y 'mes' para tener nombres más claros)
- Las variables 'd' y 'm' deberías declararlas dentro del main() como variables locales, no fuera como variables globales.