elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problemas con if
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problemas con if  (Leído 4,051 veces)
h21

Desconectado Desconectado

Mensajes: 1


Ver Perfil
problemas con if
« en: 11 Marzo 2022, 01:26 am »

hola buenas tardes, solicito su ayuda para poder resolver este problema, ya que al intentar comñilar mi programa me sale una leyenda que dice If statement missing ).
la verda apenas voy empezando a programar y me serviria mucho su ayuda, adjunto mi programa.

Código
  1. # include <iostream.h>
  2. # include <conio.h>
  3. # include <math.h>
  4. short d,m ;
  5. void main (){
  6.            cout << "Ingresa tu dia de nacimiento " ;
  7.            cin  >> d ;
  8.            cout << "Ingresa tu mes de nacimiento " ;
  9.            cout << "1 Enero \n 2 Febrero \n 3 Marzo \n 4 Abril              " ;
  10.            cout << "5 Mayo \n 6 Junio \n 7 Julio \n 8 Agosto                " ;
  11.            cout << "9 Septiembre \n 10 Octubre \n 11 Noviembre \n Diciembre " ;
  12.            cin  >> m ;
  13.            if (d,m > 21 de marzo      ) {
  14.                                         cout << "Tu signo es aries       " ; }
  15.            if (d,m > 21 de abril      ) {
  16.                                         cout << "Tu signo es tauro       " ; }
  17.            if (d,m > 22 de mayo       ) {
  18.                                         cout << "Tu signo es geminis     " ; }
  19.            if (d,m > 22 de junio      ) {
  20.                                         cout << "Tu signo es cancer      " ; }
  21.            if (d,m > 23 de julio      ) {
  22.                                         cout << "Tu signo es leo         " ; }
  23.            if (d,m > 24 de agosto     ) {
  24.                                         cout << "Tu signo es virgo       " ; }
  25.            if (d,m > 24 de septiembre ) {
  26.                                         cout << "Tu signo es libra       " ; }
  27.            if (d,m > 24 de octubre    ) {
  28.                                         cout << "Tu signo es escorpion   " ; }
  29.            if (d,m > 23 de noviembre  ) {
  30.                                         cout << "Tu signo es sagitario   " ; }
  31.            if (d,m > 22 de diciembre  ) {
  32.                                         cout << "Tu signo es capricornio " ; }
  33.            if (d,m > 21 de enero      ) {
  34.                                         cout << "Tu signo es acuario     " ; }
  35.            if (d,m > 19 de marzo      ) {
  36.                                         cout << "Tu signo es piscis      " ; }
  37.            else                         {
  38.                                         cout << "Error                   " ; }
  39.            getche () ;
  40. }

MOD: Usar etiquetas de Código GeSHi para el código


« Última modificación: 11 Marzo 2022, 18:37 pm por K-YreX » En línea

dario01dr

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: problemas con if
« Respuesta #1 en: 11 Marzo 2022, 09:38 am »

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.


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: problemas con if
« Respuesta #2 en: 11 Marzo 2022, 18:58 pm »

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:
Código
  1. #include <iostream> // La cabecera de entrada/salida estandar de C++ es <iostream>, no <iostream.h>
  2. using namespace std;
  3.  
  4. const int NUM_MESES = 12; // Longitud del array con los dias de cada mes (12 meses)
  5.  
  6. int calcularDiasAnuales(int dia, int mes) {
  7.  // El indice i indica el numero de dias del mes (i+1) => i = 0 -> dias del mes 1 (enero) -> diasMes[0] = 31
  8.  int diasMes[NUM_MESES] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  9.  
  10.  int diasAnuales = 0; // Se puede inicializar aqui con: 'diasAnuales = dia' pero asi es mas visual
  11.  for(int i = 0; i < mes - 1; ++i)
  12.    diasAnuales += diasMes[i];
  13.  
  14.  diasAnuales += dia;
  15.  return diasAnuales;
  16. }
  17.  
  18.  
  19. int main() {
  20.  int diasMes[NUM_MESES] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  21.  
  22.  int dia = 22;
  23.  int mes = 3; // Marzo
  24.  
  25.  int diaAnual = calcularDiaAnual(dia, mes);
  26.  cout << "El dia " << dia << "/" << mes << " es el dia " << diaAnual << " contando desde el 01/01" << endl;
  27. }

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.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines