Título: Problema con ejercicio de clase (Estructuras de selección) Publicado por: foreground en 4 Marzo 2013, 11:00 am Buenos días a todos. El caso es que tengo un problema con un ejercicio de clase ya que el programa que he hecho me compila pero no hace lo que se supone que debería hacer. El enunciado del problema en cuestión es:
Citar Pedir al usuario una fecha: día, mes y año. Indicar si la fecha es incorrecta. Para que la fecha sea correcta: •El año debe ser menor que 2050 y mayor que 1900. •El mes debe estar comprendido entre 1 y 12. •El día debe estar comprendido: Entre 1y31 si el mes es: enero,marzo,mayo,julio, agosto, octubre o diciembre. Entre 1 y 30 si el mes es: abril, junio, septiembre o noviembre Entre 1 y 28 si el mes es febrero. No se considera si el año es bisiesto o no El código que pense para realizar el programa es el siguiente (no obstante da igual los datos que ponga ya que en ningun caso me muestra si la fecha es correcta o no): Código
Título: Re: Problema con ejercicio de clase (Estructuras de selección) Publicado por: naderST en 4 Marzo 2013, 13:22 pm (((mes<1) || (mes>12))
Si el mes es menor a uno y mayor a doce? Esto sería más bien así: mes>=1 && mes<=12 Todas las comparaciones las deberías hacer estrictamente, es decir, mayor o igual y menor o igual EDIT: No te hace falta la comparación del rango en el cual está comprendido el mes, ya que compruebas directamente con el número del mes. Título: Re: Problema con ejercicio de clase (Estructuras de selección) Publicado por: fer912 en 4 Marzo 2013, 13:32 pm buenos dias, hace mucho que no uso c pero por que no lo desglosas por partes
por ejemplo el primer filtro que tenes es el año este va desde 1900 a 2050 cosa que con un if lo solucionas. por lo que veo, el mes tambien lo pones en numero o sea que con us switch se soluciona desde 1 a 12 y por ultimo te queda los dias if ( anyo >= 1900 && anyo <=2500) { switch mes case (aca pones en numero los meses de 31 dias) if (dia >=1 && dia<=31) case (aca los de 30) case 2: "Febrero" } lamento no poder ayudarte mas, hace mucho que no programo, si esto lo pones en una funcion bool por ejemplo se entenderia mejor, saludos Título: Re: Problema con ejercicio de clase (Estructuras de selección) Publicado por: rir3760 en 4 Marzo 2013, 17:21 pm Si puedes manejar funciones puedes utilizar una para encapsular en ella la petición de un numero entero, un ejemplo sencillo:
Código
Para conocer si el día, mes y año están en el rango valido debes seguir las indicaciones que te han dado y también utilizar el motor de búsqueda de los foros (hay varios temas sobre ello). Un saludo Título: Re: Problema con ejercicio de clase (Estructuras de selección) Publicado por: foreground en 7 Marzo 2013, 21:34 pm Al final solo cambie los operadores como dijo naderST y el programa funciono perfectamente.
Respecto a lo que has dicho rir3760 aun no he manejado esas posibilidades, por lo que he preferido hacerlo del primero modo ya que desconozco gran parte de las partes del codigo que has puesto tales como el fflush(stdout) o los usos del return. Muchísimas gracias por las respuestas. Título: Re: Problema con ejercicio de clase (Estructuras de selección) Publicado por: leosansan en 7 Marzo 2013, 22:50 pm Al final solo cambie los operadores como dijo naderST y el programa funciono perfectamente. ......................... Creo que estas equivocado en cuanto a que ya funciona bien , fíjate en esta entrada: Código
Ni correcto ni incorrecto ni nada. Uno de los problemas básicos está que en lugar de || ha de ir && tanto en años como en días. Por ejemplo 32 es mayor que 1 con lo que cumple la condición si está en un ||. Y 1800 cumple con la condición al ser menor que 2050. Además te falta "encadenar" los condicionales.Se puede comprobar primero el año y si cumple se comprueba el día y mes, que a su vez se puede simplificar. Y claro falta la opción de "fecha incorrecta" y para no cambiártelo mucho tipo rir, magistral como siempre, pero que a veces está a "demasiada altura", quedaría algo como esto: Código
Saluditos!. ....(http://st.forocoches.com/foro/images/smilies/dancer2.gif) P.D: Mírate lo que te comentaron del switch, |