| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
estoyperdida
Registrado: 25 Nov 2007 Mensajes: 16
| Publicado: 01/12/2007 2:39 pm | | | Título: Programa Principal |
| Tengo que hacer un calendario gregoriano, y ya tengo hechas todas las funciones (bisiesto, dias_de_anno...) pero ahora no tengo ni idea de como se empieza el programa principal... He hecho esto, pero no se si tiene algo que ver xD
| Código: | # include "fecha.h" # include <stdio.h> int main () { int anno, mes, dia, res; cprintf ("\n**********MENU*************\r"); cprintf ("\n* 1.- Cambiar mes *\r"); scanf("%d", &anno); res=dias_de_mes(mes, anno); cprintf ("\n* 2.- Cambiar año *\r"); cprintf ("\n* 3.- Consultar la fecha Juliana *\r"); cprintf ("\n* 4.- Consultar la fecha de Pascua *\r"); cprintf ("\n* 5.- ESC Salir del programa *\r"); cprintf ("\n***************************\r"); muestra_calendario("%d %d", anno,mes); getchar(); return 0; }
|
Estoy desesperaita con la practica, gracias de antemano por las ayudas y las molestias |
| | Volver arriba | |  | Mandu
Registrado: 28 May 2005 Mensajes: 30 Ubicación: El Toboso, Toledo ( España )
| Publicado: 01/12/2007 2:57 pm | | | Título: |
| Intenta algo como esto:
| Código: | int main ( void) { menu(); return 1; }
void menu ( void ) { int anno, mes, dia, res; cprintf ("\n**********MENU****************\r"); cprintf ("\n* 1.- Cambiar mes *\r"); cprintf ("\n* 2.- Cambiar año *\r"); cprintf ("\n* 3.- Consultar la fecha Juliana *\r"); cprintf ("\n* 4.- Consultar la fecha de Pascua *\r"); cprintf ("\n* 5.- ESC Salir del programa *\r"); cprintf ("\n*******************************\r"); cprintf ("\n Elige una opcion: \r"); /* Aqui es donde se recoge la opcion y si queres los parametros para las funciones */ scanf("%d", &anno); muestra_calendario("%d %d", anno,mes); res=dias_de_mes(mes, anno); getchar(); }
|
Espero que te hagas a la idea, tambien pues pasarle parametors a la funcion de menu, depende de lo que quieras realizar.
Hasta otra |
| | Volver arriba | |  | david_celta
Registrado: 02 Jun 2005 Mensajes: 151
| Publicado: 01/12/2007 3:03 pm | | | Título: |
| Talves el problema que tienes es que no has definido bien: ¿que es lo que quieres que el programa haga? es decir ¿cuales son los datos que introduce el usuario? y ¿cual es el resultado que debe mostrar el programa por la pantalla?
Lo que he visto que hace el codigo que has puesto es: mostrar unos mensajes de menu, ingresar un año, calcular un resultado que no usas, volver a imprimir mas opciones de menu y mostrar un calendario de una manera mas que extraña (añado que no usas las opciones).
¿Que es lo que tu programa deberia hacer? En palabras tuyas "Tengo que hacer un calendario gregoriano", eso ¿significa?
a) Mostrar un calendario por pantalla con todos sus dias b) Calcular un dia de la semana (en letras) a partir de una fecha c) Otras opciones
Podrias indicar ¿cual de esas opciones (u otras) es la que te han pedido que realices? Asi te ayudamos mejor  _________________ In all your fantasies, you always knew that man and mystery...
...were both in you... |
| | Volver arriba | |  | | estoyperdida
Registrado: 25 Nov 2007 Mensajes: 16
| Publicado: 01/12/2007 3:09 pm | | | Título: |
| El programa tiene que visualizar un calendario y tienen que realizar esas opciones (la de cambiar de año, de mes...), yo ya tengo hecho lo que vienen a ser las funciones, pero no se como hacer pa que vaya el principal. Mil gracias por las molestias |
| | Volver arriba | |  | david_celta
Registrado: 02 Jun 2005 Mensajes: 151
| Publicado: 01/12/2007 3:17 pm | | | Título: |
| Hmmm.... Algo asi:
| Código: |
int menu ( void ) { cprintf ("\n**********MENU****************\r"); cprintf ("\n* 1.- Cambiar mes *\r"); cprintf ("\n* 2.- Cambiar año *\r"); cprintf ("\n* 3.- Consultar la fecha Juliana *\r"); cprintf ("\n* 4.- Consultar la fecha de Pascua *\r"); cprintf ("\n* 5.- Salir del programa *\r"); cprintf ("\n*******************************\r"); cprintf ("\n Elige una opcion: \r");
int opcion; scanf("%d",opcion); return opcion; }
int main() { int opcion;
do { opcion=menu();
switch(opcion) { case 1:cambiar_mes();break; case 2:cambiar_annio();break; case 3:juliano();break; case 4:pascua();break; }
mostrar_calendario(); } while (opcion!=5)
return 0; }
|
No se cuales ni como estan definidas tus funciones asi que mas o menos te planteo una estructura con "opciones generales". Tendrias que adaptarlo a lo que necesites Hmmm  _________________ In all your fantasies, you always knew that man and mystery...
...were both in you... |
| | Volver arriba | |  | digies
Registrado: 18 Nov 2005 Mensajes: 377 Ubicación: Cono Sur
| Publicado: 01/12/2007 3:18 pm | | | Título: |
| Refiriéndome solo a las llamadas a las funciones:
En la asignación res=dias_de_mes(mes, anno); está correcto, siempre y cuando la función dias_de_mes(mes, anno) devuelva un valor. Es decir, depende de como definiste la función y sus argumentos.
En la llamada que haces a muestra_calendario("%d %d", anno,mes); sí que es extraña (tal como dice david_celta). Elimina los "%d". Supongo que esa función no devuelve ningún valor (será de tipo void?). También depende de cómo definiste dicha función.
Para más detalle puedes consultar el tutorial de este sitio para ver como se trabaja con funciones en C y cómo se hacen las llamadas correctamente desde el bloque principal del programa.
Un saludo |
| | Volver arriba | |  | | estoyperdida
Registrado: 25 Nov 2007 Mensajes: 16
| Publicado: 01/12/2007 3:42 pm | | | Título: |
| Haber si me he enterado: Tengo estas 11 funciones ( int es_bisiesto(int anno), int dias_de_mes(int mes,int anno), int juliana(int dia, int mes, int anno), int dias_de_anno(int anno), int comprueba_fecha(int dia, int mes, int anno), int compara_fechas(int dia1, int mes1, int anno1, int dia2, int mes2, int anno2), int dia_siguiente(int * dia, int * mes, int * anno), int dif_dias(int dia1, int mes1, int anno1, int dia2, int mes2, int anno2), int dia_semana(int dia, int mes, int anno), void muestra_calendario(int mes, int anno), void pascua(int anno, int * dia, int * mes) ), y se supone que tengo que meter todas en el principal . Entonces me tiene que quedar esto?
| Código: | # include "fecha.h" # include <stdio.h>
int menu ( void ) { int anno, dia, mes, res; cprintf ("\n**********MENU****************\r"); cprintf ("\n* 1.- Cambiar mes *\r"); cprintf ("\n* 2.- Cambiar año *\r"); cprintf ("\n* 3.- Consultar la fecha Juliana *\r"); cprintf ("\n* 4.- Consultar la fecha de Pascua *\r"); cprintf ("\n* 5.- Salir del programa *\r"); cprintf ("\n*******************************\r"); cprintf ("\n Elige una opcion: \r");
int opcion; scanf("%d",opcion); return opcion; }
int main() { int opcion;
do { opcion=menu();
switch(opcion) { case 1:dias_de_mes();break; /*¿Aqui lo cambio y pongo mis funciones ?*/ case 2:dias_de_anno();break; case 3:juliana();break; case 4:pascua();break; }
mostrar_calendario(); } while (opcion!=5)
return 0; } |
|
| | Volver arriba | |  | david_celta
Registrado: 02 Jun 2005 Mensajes: 151
| Publicado: 01/12/2007 3:56 pm | | | Título: |
| No se si te entiendo bien que es lo que quieres hacer, pero se me ocurrio esto, no se si te sirva en algo:
| Código: | int main() { int opcion; int anno, dia, mes, res; dia =1; mes=12; anno=2007; do { printf ("la fecha base es dia=%d mes=%d anno=%d",dia,mes,anno); opcion=menu(); switch(opcion) { case 1: printf ("Nuevo mes:");scanf("%d",&mes); printf ("la fecha ahora es dia=%d mes=%d anno=%d",dia,mes,anno); break; case 2: printf ("Nuevo anno:");scanf("%d",&anno); printf ("la fecha ahora es dia=%d mes=%d anno=%d",dia,mes,anno); break; case 3:res=juliana(dia,mes,anno); printf ("Resultado de juliana:%d",res);break; case 4:pascua(anno,&dia,&mes); printf("resultado de pascua:mes=%d y anno=%d",mes,anno);break; }
muestra_calendario(mes,anno); } while (opcion!=5)
return 0; }
|
_________________ In all your fantasies, you always knew that man and mystery...
...were both in you... |
| | Volver arriba | |  | estoyperdida
Registrado: 25 Nov 2007 Mensajes: 16
| Publicado: 01/12/2007 4:06 pm | | | Título: |
| | Muchas gracias david_celta ^^, ahora me pondre hacer experimentos xD, haber si consigo acabarla |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |