/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

por que no aparece el mes

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
pacharo



Registrado: 27 Nov 2007
Mensajes: 3
Ubicación: México D.F.

MensajePublicado: 04/12/2007 4:47 pm
Título: por que no aparece el mes

En el programa que tengo que hacer, primero debe aparecer un menu, con tres opciones: 1.- calculo del area de un triangulo, 2.- mostrar los dias de un mes, 3.- salir del programa.

el primer problema es que si el usuario da una opcion en minuscula no lo acepta.
el segundo es que no me desplega los dias del mes, no supe como de nuevo poner los doces meses con una opcion.

y tercera si el usuario escribe otra opcion que el programa le indique opcion invalida.

muchas gracias de antemano.

les escribo el codigo
/*PROGRAMA PARA CALCULAR EL AREA DE UN TRIANGULO Y LOS MESES DE UN MES CUALQUIERA*/

#include <stdio.h>
#include <math.h>
#include <conio.h>

//Lo primero es declarar la funcion que calcula el area.
float area(int ladoA,int ladoB, int ladoC)
{//Comienza la funsion area.
float area;
float p;
p=(ladoA+ladoB+ladoC)*0.5;
area=sqrt(p*(p-ladoA)*(p-ladoB)*(p-ladoC));
return(area);
}//Termina la funsion area.

int ladoA,ladoB,ladoC,nmes;
char menu;
float areat;
void main()

{//Inicia el programa
for(menu='A'; menu!='C'Wink//Inicia el ciclo para seguir o salir.
{//Inicia el for 0.
printf("\n **********************************************************************\n");
printf(" * Hola que tal, te puedo ayudar a calcular la opcion que tu elijas *\n");
printf(" **********************************************************************\n");
printf("\n A.- Calcular el area de un triangulo.\n");
printf("\n B.- Calcular los dias de un mes cualquiera.\n");
printf("\n C.- Salir.\n\n ");
scanf("%c",&menu);
switch(menu)
{//Inicia switch 1.
case 'A':
printf("\n ********************************************\n");
printf(" * Introduzca los 3 lados del triangulo: *\n");
printf("\n ********************************************\n");
scanf("%d",&ladoA);
scanf("%d",&ladoB);
scanf("%d",&ladoC);
printf(" p=(%d+%d+%d)/2\n",ladoA,ladoB,ladoC);
printf(" Area=sqrt(p(p-%d)(p-%d)(p-%d))\n",ladoA,ladoB,ladoC);
areat=area(ladoA,ladoB,ladoC);
printf("\n El area del triangulo es:%g \n\n",areat);
getch();
return;
//*************************************************************************
case 'B':
printf(" ********************************************\n");
printf(" * Introduce el numero del mes *\n");
printf(" ********************************************\n");
scanf("%d",&nmes);
switch(nmes)
{
case '1':
printf("\nEl mes de enero tiene 31 dias.\n");


case '2':
printf("\nEl mes de febrero tiene 28 ó 29 dias si es biciesto.\n");


case '3':
printf("\nEl mes de marzo tiene 31 dias.\n");


case '4':
printf("\nEl mes de abril tiene 30 dias.\n");

case '5':
printf("\nEl mes de mayo tiene 31 dias.\n");


case '6':
printf("\nEl mes de junio tiene 30 dias.\n");


case '7':
printf("\nEl mes de julio tiene 31 dias.\n");


case '8':
printf("\nEl mes de agosto tiene 30 dias.\n");

case '9':
printf("\nEl mes de septiembre tiene 30 dias.\n");


case '10':
printf("\nEl mes de octubre tiene 31 dias.\n");

case '11':
printf("\nEl mes de noviembre tiene 30 dias.\n");


case '12':
printf("\nEl mes de diciembre tiene 31 dias.\n");
return;


}
case 'C':
return;
}//Termina switch 1
}//termina el for 0.
getch();
}//termina el programa.
_________________
Gracias
Chido
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 151

MensajePublicado: 04/12/2007 7:23 pm
Título:

Deberias de ordenar mejor tu codigoy usar el for de buena manera hmmm, bueno simple sugerencia

Por cierto, a los cases (de los switchs) les falta el break (a todos). Para la opcion no valida, ponle un default al switch de la opcion, cuando entre al default le pones un mensaje que diga "gil, la opcion es no valida, solo a,b o c" y para lo de la minuscula ponle un toupper (ctype.h) a la opcion para que lo convierta a mayuscula

Saludo++
_________________
In all your fantasies,
you always knew
that man and mystery...

...were both in you...
Volver arriba
pacharo



Registrado: 27 Nov 2007
Mensajes: 3
Ubicación: México D.F.

MensajePublicado: 04/12/2007 10:31 pm
Título: Gracias

david_celta escribió:
Deberias de ordenar mejor tu codigoy usar el for de buena manera hmmm, bueno simple sugerencia

Por cierto, a los cases (de los switchs) les falta el break (a todos). Para la opcion no valida, ponle un default al switch de la opcion, cuando entre al default le pones un mensaje que diga "gil, la opcion es no valida, solo a,b o c" y para lo de la minuscula ponle un toupper (ctype.h) a la opcion para que lo convierta a mayuscula

Saludo++

Muchas gracias David, lo intentare aunque no quedo muy claro pero es por mi.
_________________
Gracias
Chido
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 151

MensajePublicado: 05/12/2007 12:22 pm
Título:

Tambien quitale los "return" eso hace que el programa se termine en esa linea

Código:

printf("\n El area del triangulo es:%g \n\n",areat);
getch();
return;


Por ejemplo ese "return" despues del "getch" debes quitarlo, por ahi vi otro tambien en el ultimo case, y no olvides ponerle "break" al final de cada case
_________________
In all your fantasies,
you always knew
that man and mystery...

...were both in you...
Volver arriba
pacharo



Registrado: 27 Nov 2007
Mensajes: 3
Ubicación: México D.F.

MensajePublicado: 05/12/2007 2:16 pm
Título: gracias mas ayuda

Me puedes ayudar a revisar este codigo, ahora no se porque reconoce al segundo switch, la siguiente es para que convierta las minusculas en mayusculas en parte se pone la instruccion tolwer(), y por que no me aparecen los dias.
Y en el case 3 como salir del programa.

Muchas gracias de antemano

Este ya es otro codigo


[/#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>

float area_triangulo(int lado1,int lado2,int lado3)
{
float perimetro;
float area_triangulo;
perimetro=(lado1+lado2+lado3)/0.5;
area_triangulo=sqrt(perimetro*(perimetro-lado1)*(perimetro-lado2)*(perimetro-lado3));
return(area_triangulo);
}
int lado1, lado2, lado3, i;
char mes;
float area;
void main()
{
int num;
gotoxy( 10,1);
printf("Seleccione un numero de la opcion del Menu \n\n MENU:\n 1-CALCULO DEL AREA DE UN TRIANGULO\n 2-VER DIAS DE UN MES \n 3-SALIR\n[ ]\b\b");
scanf("%d",&num);
switch(num)
{
case 1:
printf("Introduzca los lados del triangulo: \n");
scanf("%d %d %d", &lado1, &lado2, &lado3);
printf(" perimetro=(%d+%d+%d)/2\n",lado1,lado2,lado3);
printf(" area=sqrt(p(p-%d) (p-%d) (p-%d)\n",lado1,lado2,lado3);
area=area_triangulo(lado1,lado2,lado3);
printf("el area del triangulo es: %d" , area_triangulo);
break;
case 2:
tolower(c);
printf(" Seleccione el mes del cual dese saber el numero de dias\n\n A- ENERO\n B- FEBRERO\n C- MARZO\n D- ABRIL\n E- MAYO\n F- JUNIO\n G- JULIO\n H- AGOSTO\n I- SEPTIEMBRE\n J-OCTUBRE\n K-NOVIEMBRE\n L-DICIEMBRE\n[ ]\b\b");
scanf("%c",&mes);
switch(mes)
{
case 'A':
for(i=0; i<31; i++)
printf("%i ",i);
break;
case 'B':
for(i=0; i<28; i++)
printf("El mes de febrero en año bisiesto %i \t",i);
break;
case 'C':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
case 'D':
for(i=0; i<30; i++)
printf("%i \t",i++);
break;
case 'E':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
case 'F':
for(i=0; i<30; i++)
printf("%i \t",i++);
break;
case 'G':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
case 'H':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
case 'I':
for(i=0; i<30; i++)
printf("%i \t",i++);
break;
case 'J':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
case 'K':
for(i=0; i<30; i++)
printf("%i \t",i++);
break;
case 'L':
for(i=0; i<31; i++)
printf("%i \t",i++);
break;
default:
printf(" Opcion invalida \a\n");
}
case 3:
exit();
default:
printf(" Opcion Invalida \a \n");

}

getch();
}]
_________________
Gracias
Chido
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 377
Ubicación: Cono Sur

MensajePublicado: 05/12/2007 3:13 pm
Título:

Deberías reemplazar void main() {...} (eso hace suponer que estás utilizando un compilador de Mr. Borland no?). por int main(void) {...}.

En
printf("el area del triangulo es: %d" , area_triangulo);
tienes que cambiarlo a
printf("el area del triangulo es: %d" , area); y cambiar el código de formato de la cadena de control %d por %f.

La variable c no está declarada, y el resultado que arroja tolower debes asignarla a una variable del mismo tipo. Prototipo de tolower: int tolower(int ch);

Para salir, cuando se ejecuta el case 3:, tienes que colocarle a la función exit un "magic number" como por ejemplo 1; y mejor aun exit (EXIT_FAILURE); o return EXIT_FAILURE; Para ello debes agregarle a tu programa el header <stdlib.h>

También es conveniente colocar al final del bloque principal del programa la función de retorno return 0; o return macro_correspondiente.

Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com