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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda errores, ejercicio dia, mes, año Codificación a C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda errores, ejercicio dia, mes, año Codificación a C  (Leído 2,465 veces)
lanak_29

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda errores, ejercicio dia, mes, año Codificación a C
« en: 31 Marzo 2015, 12:13 pm »

Hola que tal,
Compañeros soy nuevo en esto de la programación "c" constantemente tengo dudas, supongo que es normal. A ver si me podeis ayudar con un codigo. El codigo me lo han pasado en algorismo y lo estoy pasando a "C", tengo algun fallo.
En el codigo no me pedian la funcion main. Pero si no la incluyo me da fallo, Aun asi tengo un warnning. El codigo tiene dos warnings uno en la linea de main y el otro en la linea anterior a  
                         int isAValidDay (int nDays, int nDaysMonth){

El tema es que tengo dos warnings me podeis ayudar a solucionarlo. Gracias.

Código
  1. #include <stdio.h>
  2.  
  3. //algorisme valiDate
  4.  
  5.  
  6.  
  7. void testNOfDaysFebruary();
  8. void testlsACorrectDate();
  9. int nOfdaysfebruary(int year);
  10.  
  11.  
  12.  
  13. typedef enum {FALSE, TRUE} bool; //Estructura booleana.
  14.  
  15. int main(){ //La funcion main vacia?
  16. }
  17.  
  18. //Variables
  19. int nDays;
  20. //Codigo
  21. int nOfdaysfebruary(int year)
  22. {
  23. if (year% 4 == 0 && year% 100 != 0 ){     //(year mod 4 = 0 and year mod 100 &#8800; 0) llavors
  24. nDays=29;
  25. }
  26. else
  27. nDays=28;
  28.  
  29. return nDays;
  30. }
  31.  
  32. void testNOfDaysFebruary()
  33. /*printf("Test number of days February\n");*/
  34. {
  35. if (nOfdaysfebruary(2016 !=29)){
  36. printf("%c ",'E');
  37. printf("%d ",2016);
  38. printf("%c ",' ');   //Pendiente REVISAR imprimir un espacio
  39. }
  40. if (nOfdaysfebruary(2014 !=28)){
  41. printf("%c ",'E');
  42. printf("%d ",2014);
  43. printf("%c ",' ');   //Pendiente REVISAR imprimir un espacio
  44. }  
  45. if (nOfdaysfebruary(2000 !=29)){
  46. printf("%c ",'E');
  47. printf("%d ",2016);
  48. printf("%c ",' ');   //Pendiente REVISAR imprimir un espacio
  49. }
  50. if (nOfdaysfebruary(1600 !=29)){
  51. printf("%c ",'E');   //Imprimir caracter
  52. printf("%d ",1600);
  53. printf("%c ",' ');   //Pendiente REVISAR imprimir un espacio
  54. }
  55. }
  56. int nDaysMonth (int month, int year)
  57.  
  58. {
  59.  
  60. if ( month ==2){
  61. nDays = nOfdaysfebruary(year);
  62. }
  63. else {
  64. if(month == 4 || month == 6 || month == 9 || month == 11 )
  65. nDays=30;
  66. else
  67. nDays=31;
  68. }
  69.  
  70.  
  71. }
  72. int isAValidDay (int nDays, int nDaysMonth){ //FUNCION
  73.  
  74. return ((nDays >= 1) & (nDays <= nDaysMonth)); //verificar  se han colocado dos parentesis
  75. }
  76.  
  77. int isAvalidMonth(int month){ //FUNCION
  78. return (month <13); /*retorno*/
  79. }
  80.  
  81.  
  82. int isACorrectDate(int day, int month, int year){   // FUNCION
  83.  
  84. //typedef enum {FALSE, TRUE} bool;
  85. bool dateOK;
  86. int maxDays;
  87.  
  88. dateOK=FALSE;   //Tener en cuenta en mayusculas FALSE.
  89.  
  90. if (isAvalidMonth (month)){
  91. maxDays=nDaysMonth(month, year);
  92. dateOK = isAValidDay (day, maxDays);
  93. }
  94.  
  95. return dateOK; /*retorno*/
  96. }
  97.  
  98. /* aquesta acció us la donem ja codificada en C */
  99. void testIsACorrectDate(){
  100. printf("Test isACorrectDate\n");
  101. if (isACorrectDate(31, 4, 2015)) printf("error 31/4/2015\n");
  102. if (!isACorrectDate(31, 3, 2015)) printf("error 31/3/2015\n");
  103. if (isACorrectDate(29, 2, 2015)) printf("error 29/2/2015\n");
  104. if (!isACorrectDate(29, 2, 2400)) printf("error 29/2/2400\n");
  105. }

Mod: Tema modificado, los codigos deben ir en etiquetas GeSHi


« Última modificación: 31 Marzo 2015, 12:31 pm por engel lex » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda errores, ejercicio dia, mes, año Codificación a C
« Respuesta #1 en: 31 Marzo 2015, 13:26 pm »

Si no pones los warnings, quienes no lo puedan comilar no podrán verlos. Ponlos.

El main es necesario para compilar el programa. Si no está, no tiene por donde empezar el programa. En el main es donde debes testear el algoritmo.


En línea

Hurdano


Desconectado Desconectado

Mensajes: 322


Se que puedo cambiar el futuro, pero no el pasado


Ver Perfil WWW
Re: Ayuda errores, ejercicio dia, mes, año Codificación a C
« Respuesta #2 en: 31 Marzo 2015, 14:06 pm »

Buenas.

En lenguaje C, deberías empezar con algo más básico, ya que ni sabes que dentro de main tiene que ir tu código. Es sí o sí. Ya que así se requiere.

Los problemas son esos, que no está dentro y no los cierras bien. Vamos es lo primero que he visto, igual tienes algo más o no, pero primera prueba con eso.
En línea

lanak_29

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda errores, ejercicio dia, mes, año Codificación a C
« Respuesta #3 en: 31 Marzo 2015, 16:58 pm »

Gracias!!
He visto que era necesario poner el main.
Este ejercicio me lo han puesto como practica.
El problema de los warnings eran que faltaban return.

En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda errores, ejercicio dia, mes, año Codificación a C
« Respuesta #4 en: 2 Abril 2015, 03:53 am »

Otro error (uno lógico) se encuentra en todos los condicionales de la función "testNOfDaysFebruary":
Código
  1. void testNOfDaysFebruary(void)
  2. {
  3.   if (nOfdaysfebruary(2016 != 29)){
  4.   /* ... */
  5.   if (nOfdaysfebruary(2014 != 28)){
  6.   /* ... */
  7.   if (nOfdaysfebruary(2000 != 29)){
  8.   /* ... */
  9.   if (nOfdaysfebruary(1600 != 29)){
  10.   /* ... */
  11. }
Sintácticamente son correctas pero tienen el efecto de llamar a la función "nOfdaysfebruary" con el valor cero como argumento.

Hay que sacar la comparación con las literales fuera de la lista de argumentos de la función:
Código
  1. void testNOfDaysFebruary(void)
  2. {
  3.   if (nOfdaysfebruary(2016) != 29){
  4.   /* ... */
  5.   if (nOfdaysfebruary(2014) != 28){
  6.   /* ... */
  7.   if (nOfdaysfebruary(2000) != 29){
  8.   /* ... */
  9.   if (nOfdaysfebruary(1600) != 29){
  10.   /* ... */
  11. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con codificacion de template
Diseño Gráfico
prosk8er 1 1,769 Último mensaje 20 Septiembre 2005, 08:51 am
por PhenfiX
Ayuda con codificacion en Pascal
Programación General
Nightwinds 7 9,000 Último mensaje 5 Mayo 2016, 14:02 pm
por hrchacho
Ayuda con una codificacion muy rara
Criptografía
hecky 4 6,553 Último mensaje 13 Septiembre 2011, 14:42 pm
por APOKLIPTICO
Errores con un ejercicio de registros en el que tengo que crear una agenda. C++
Programación C/C++
seryioo 4 1,993 Último mensaje 8 Septiembre 2015, 19:53 pm
por ivancea96
(Consulta) Ejercicio en C - Errores que no logro entender.
Programación C/C++
palacio29 2 2,134 Último mensaje 21 Agosto 2016, 19:04 pm
por palacio29
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines