Título: Problemas Dev C++ " AYUDA URGENTE!!!!" Publicado por: JonatanP en 26 Abril 2020, 21:19 pm Hola, necesito ayuda para estos tres ejercicios. si me pueden explicar o dar una solución. se los agradecería mucho, ya me desespere. Gracias.
9. Programa que captura un año válido y dice si es bisiesto o no. Para ser válido deberá cumplir con estar entre 1900 y 2019, de no ser así indique el error y vuélvalo a solicitar hasta que lo sea. Para saber si es bisiesto, éste deberá ser divisible por 4 pero no por 100 o divisible entre 400. Código
En el 9 , no se como hacer que aparezca un error cuando se coloca un numero menor de 1900 y mayor a 2019. 10. Programa que convierta un número entero positivo en número binario. Deberá validar que el número tenga un valor entre el 1 y el 255 de no ser así indique error y pídalo hasta que cumpla con esto. Para este programa podrán usar la función pow() la cual se encuentra en la librería MATH.H. la función pow lleva entre paréntesis dos números enteros, uno es el número y el otro la potencia. Ej. R=pow(5,2) entonces el valor de R=25. Y aqui en el 10, no se como empezarlo. 11. Programa que captura una fecha válida, considerando año entre 1900 y 2019, febrero de 28 días y el resto de los meses como corresponde, deberá indicar error si no es válida y seguirla preguntando hasta que lo sea. Código
En el 11, no se donde poner el do while para que siga preguntando si la fecha no esta enre 1900 y 2019 Título: Re: Problemas Dev C++ " AYUDA URGENTE!!!!" Publicado por: K-YreX en 26 Abril 2020, 22:36 pm Especifica en qué parte de los programas tienes problemas y a ser posible coloca el código que tengas hecho para poder ayudarte. Para colocar código utiliza las etiquetas de Código GeSHi del desplegable que hay sobre el cuadro de texto y selecciona el lenguaje apropiado (C o C++, el que sea).
Título: Re: Problemas Dev C++ " AYUDA URGENTE!!!!" Publicado por: JonatanP en 26 Abril 2020, 22:47 pm Especifica en qué parte de los programas tienes problemas y a ser posible coloca el código que tengas hecho para poder ayudarte. Para colocar código utiliza las etiquetas de Código GeSHi del desplegable que hay sobre el cuadro de texto y selecciona el lenguaje apropiado (C o C++, el que sea). Listo, gracias. Espero puedas ayudarmeTítulo: Re: Problemas Dev C++ " AYUDA URGENTE!!!!" Publicado por: K-YreX en 27 Abril 2020, 03:04 am Bueno pues vamos uno por uno...
Para empezar un tema importante: diferencia entre while() y do{}while(). Un while() primero comprueba una condición y se pueden dar dos casos:
Resumido:
El bucle while() se utiliza cuando ya conocemos el valor que vamos a utilizar para la condición antes de ejecutar el bucle. Y por otra parte el do{}while() se utiliza cuando no conoceremos el valor de la condición hasta después de ejecutar el bucle una vez. 9. Programa que captura un año válido y dice si es bisiesto o no. Para ser válido deberá cumplir con estar entre 1900 y 2019, de no ser así indique el error y vuélvalo a solicitar hasta que lo sea. Para saber si es bisiesto, éste deberá ser divisible por 4 pero no por 100 o divisible entre 400. Aquí lo que quieres hacer se conoce como filtro. Vas a pedir un valor concreto hasta que te lo pongan correctamente. Se puede hacer con ambos bucles aunque el más típico es un do{}while() de la siguiente manera:Código En el 9 , no se como hacer que aparezca un error cuando se coloca un numero menor de 1900 y mayor a 2019. Código: DO Código: pido el dato Pero tú has mezclado ambas cosas ya que pides el año antes de empezar el bucle pero luego usas un do-while. Ahora viene el tema de mostrar un "algo" cuando el valor no es válido. Si estás usando un do-while, tienes que hacerlo de la siguiente manera: Código: DO Visto con un supuesto más concreto. Un filtro que te pide la edad y tiene que estar entre 18 y 65: Código
Y si prefieres hacerlo con un while, te ahorras la doble comprobación (o con nuestra mejora: el uso de un bool) pero vas a tener que pedir el dato antes del bucle y al final de este. Con el mismo ejemplo de antes para que veas que son intercambiables: Código Es mejor que uses la primera siempre porque aunque la segunda parece más simple repites código necesariamente y ahora solo pides un número pero puede ser que pidas muchos datos y tengas que repetir muchas líneas. Con esto ya deberías poder hacer el 9 pero si tienes alguna duda, siempre puedes preguntarla. Y que no te de miedo cargarte lo que tienes y empezar de 0. A veces es más fácil porque así no intentas reutilizar lo que ya tienes. Sobre todo en casos como estos que está hecho un lío. Ahora vamos primero al 11 ya que tienes parte hecha. Para no volver a repetir todo sobre los bucles, te doy una idea para hacerlo. Esta vez te lo pondré en pseudocódigo así que tendrás que entenderlo para luego escribirlo tú en el lenguaje que uses. Puedes ir filtrando cada dato con lo que haces más bucles do-while pero con condiciones más sencillas o pedir todo y luego ya validar. Me parece más correcto lo primero porque si te ponen el día 32, para qué vas a pedir el mes si ya sabes que no va a estar bien? Pero como pone que pide una fecha pues lo haré para pedirlo todo junto y luego validar. (Doy por hecho que tampoco has visto arrays todavía, si es cierto no es para asustarte, no son para tanto y hasta te pueden quitar trabajo pero lo haré sin usarlos). PD: Cuando no sepas dónde poner el do-while para que un programa se repita. Hazlo primero sin que se repita: pide datos y valida y cuando ya lo tengas mete todo el programa dentro de un do{} y pon la condicion del while() y listo: Código: // SIN REPETIR EL PROGRAMA Y ahora que ya lo tienes. Coges todo el código lo metes en un DO y le pones la condición: Código: HACER El ejercicio 10 te lo explico por encima. Daré por hecho que ya sabes lo que es un número binario, cómo se pasa de binario a decimal y viceversa y esas cosas... Lo primero sería hacer un filtro como ya has visto para que el número esté entre 1 (00000001) y 255 (11111111). Te lo explicaré sin la función pow() para que veas una forma mejor de hacerlo pero sencilla también. El 1 que más vale en binario de los ocho que componen nuestro número es 128 (no entraré en detalles, espero que estemos de acuerdo). Y de ahí, los siguientes unos van valiendo la mitad: 64, 32, 16, 8, 4, 2 y 1. Entonces puedes ir mirando si tu número es mayor o igual que x (llamemos así al 128, 64,...) y si lo es, se lo restas y muestras un 1, si no lo es, muestras un 0. Siempre al finalizar divides x a la mitad: Código: HACER PD 2: Por lo que veo parece que te han dicho que te van a enseñar C++ pero lo que te están enseñando es una mezcla de C/C++ (muy común en muchos lugares, a mí también me lo hicieron). Pero que sepas que la mayoría de lo que usas es C. PD 3: No utilices la biblioteca <conio.h>. Es una biblioteca que no es estándar por lo que puede dar problemas según donde se use y seguramente lo hagas por la función getch() para que no se cierre el programa.
PD 4: Haces bien poniendo nombres fáciles de identificar a las variables pero acostúmbrate a usar también constantes en vez de poner números sueltos. Con una constante, la puedes cambiar una vez y que el programa funcione de otra manera y si vas poniendo números sueltos tendrás que cambiarlos todos uno por uno... Un rollo vamos.
Código
Código
|