Programa C++

Iniciado por mikemikemike, 5 Mayo 2010, 08:17 AM

0 Miembros y 1 Visitante están viendo este tema.

mikemikemike

Este ejercicio, lo coloque tambien en Programacion General, pero nadie me ha ayudado...  Disculpas por postear lo mismo en 2 sitios...

La empresa "AA S.A." le contrato para desarrollar un programa en "C" capaz de desplegar el signo zodiacal a partir de una fecha de nacimiento, por lo tanto el usuario deberá de digital el día y el mes de nacimiento, y el módulo le debe de desplegar por pantalla la información

Este es el codigo que tengo, tomando en cuenta la idea que alguien coloco en el foro de programacion general...

#include "conio.h"
#include "stdio.h"
void main()
{
int m;
clrscr();
printf("DIGITE EN NUMEROS EL MES, SEGUIDO DEL DIA DE NACIMIENTO: ");
scanf("%d",&m);


if ((m>321) | (m<420))
printf("SU SIGNO ES ARIES ");
else
if ((m>421) | (m<520))
printf("SU SIGNO ES TAURO ");
else
if ((m>521) | (m<620))
printf("SU SIGNO ES GEMINIS ");
else
if ((m>621) | (m<720))
printf("SU SIGNO ES CANCER ");
else
if ((m>721) | (m<820))
printf("SU SIGNO ES LEO ");
else
if ((m>821) | (m<920))
printf("SU SIGNO ES VIRGO ");
else
if ((m>921) | (m<1020))
printf("SU SIGNO ES LIBRA ");
else
if ((m>1021) | (m<1120))
printf("SU SIGNO ES ESCORPION ");
else
if ((m>1121) | (m<1220))
printf("SU SIGNO ES SAGITARIO ");
else
if ((m>1221) | (m<120))
printf("SU SIGNO ES CAPRICORNIO ");
else
if ((m>121) | (m<220))
printf("SU SIGNO ES ACUARIO ");
else
if ((m>221) | (m<320))
printf("SU SIGNO ES PISCIS ");
getch();
}

No me da errores, pero el programa siempre me da el resultadp " SU SIGNO ES ARIES", lo cual señala que esta malo!!

Gracias y si esa era la causa, utilice el comando erroneo, sin enbargo hice este otro, aplicando mi poco conocimiento, pero por menu, les envio para ver que les parece, si me corrio!!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int fin=0;
int opcion;
int d;
while (fin ==0)
   {
printf ("MENU DE SIGNO ZODIACAL\n\n");
printf ("\t Digite la opcion deseada.\n");
printf ("\t1 Digite si nace en enero.\n");
printf ("\t2 Digite si nace en febrero.\n");
printf ("\t3 Digite si nace en marzo.\n");
printf ("\t4 Digite si nace en abril.\n");
printf ("\t5 Digite si nace en mayo.\n");
printf ("\t6 Digite si nace en junio.\n");
printf ("\t7 Digite si nace en julio.\n");
printf ("\t8 Digite si nace en agosto.\n");
printf ("\t9 Digite si nace en setiembre.\n");
printf ("\t10 Digite si nace en octubre.\n");
printf ("\t11 Digite si nace en noviembre.\n");
printf ("\t12 Digite si nace en diciembre.\n");
printf ("\t13] SALIR\n");
printf ("\n\n opcion: ");
scanf ("%d", &opcion);
switch (opcion)
   {

   case 1:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es :\n%d Capricornio" );
   else
   printf ("El signo zodiacal suyo es :\n%d Acuario" );
   printf("\n");
   break;

   case 2:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Acuario " );
   else
   printf ("El signo zodiacal suyo es : Piscis " );
   printf("\n");
   break;

   case 3:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Piscis" );
   else
   printf ("El signo zodiacal suyo es : Aries" );
   printf("\n");
   break;

   case 4:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Aries " );
   else
   printf ("El signo zodiacal suyo es : Tauro " );
   printf("\n");
   break;

   case 5:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Tauroo" );
   else
   printf ("El signo zodiacal suyo es : Geminis" );
   printf("\n");
   break;

   case 6:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Geminis " );
   else
   printf ("El signo zodiacal suyo es : Cancer " );
   printf("\n");
   break;

   case 7:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Cancer" );
   else
   printf ("El signo zodiacal suyo es : Leo" );
   printf("\n");
   break;

   case 8:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Leo " );
   else
   printf ("El signo zodiacal suyo es : Virgo " );
   printf("\n");
   break;

   case 9:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Virgo" );
   else
   printf ("El signo zodiacal suyo es : Libra" );
   printf("\n");
   break;

   case 10:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Librao " );
   else
   printf ("El signo zodiacal suyo es : Escorpion " );
   printf("\n");
   break;

   case 11:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Escorpion" );
   else
   printf ("El signo zodiacal suyo es : Sagitario" );
   printf("\n");
   break;

   case 12:
   clrscr();
   printf("\n");
   printf ("Digite el dia de nacimiento \n");
   scanf ("%d", &d);
   if (d<20)
   printf ("El signo zodiacal suyo es : Sagitario " );
   else
   printf ("El signo zodiacal suyo es : Capricornio " );
   printf("\n");
   break;


   default:
      fin= 13;
      break;
      }
}
system("pause");
getch();
}








Akai

#1
las operaciones lógicas OR y AND, en C se escriben dos veces a menos que quieras realizarlas bit a bit. Estás haciendo comparaciones con errores tanto de escritura como de planteamiento.

Si quieres expresar si m está entre A y B se expresa como (entre otras formas que se puedan ocurrir) if((m>A) && (m<B)). Ese viene a ser el fallo.

EDIT: leete las normas del foro, y no postees las cosas en 2 sitios, no hagas doble post, utiliza el boton "editar" si quieres añadir algo mas.