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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Foros Generales
| |-+  Dudas Generales (Moderador: engel lex)
| | |-+  por mas que intento realizarlo no me sale como deberia es con bucle while
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: por mas que intento realizarlo no me sale como deberia es con bucle while  (Leído 1,934 veces)
CIUDADANO Z

Desconectado Desconectado

Mensajes: 3


Ver Perfil
por mas que intento realizarlo no me sale como deberia es con bucle while
« en: 17 Junio 2019, 23:29 pm »

Haz un programa que vaya leyendo números hasta que el usuario introduzca un
número negativo. En ese momento, el programa mostrará por pantalla el número mayor de
cuantos ha visto.


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: por mas que intento realizarlo no me sale como deberia es con bucle while
« Respuesta #1 en: 18 Junio 2019, 00:50 am »

No pones lo que llevas hecho. No pones el lenguaje de programación. Ni siquiera explicas exactamente lo que tiene que hacer el programa. Dices que vaya leyendo números hasta que el usuario ponga uno negativo. A que te refieres? Que lea números de un vector hasta que el usuario lo pare? Que lea el número del usuario, y compruebe si es negativo repitiendo este proceso y almacene todos los números del usuario?

Te dice explícitamente que lo hagas con un bucle while?

Como lo quieres implementar? Quieres que se guarden todos los números y al poner uno negativo se compruene cual es el mayor? Quieres que solo se guarde el número mayor para comprobarlo con el número introducido por el usuario y substituyendolo en caso de ser necesario?

Lo normal para realizar lo que pides es usar un bucle for, a menos que ahora mismo estés estudiando el bucle while.

Con qué necesitas ayuda exactamente? Vas a aprender algo si te dan el programa hecho? O aprenderás más leyendo un libro en donde te viene explicado todo?

Para detener el bucle while al poner números negativos necesitas usar una variable como argumento.
Te lo pondré en C++ pero practicamente en todos los lenguajes es lo mismo con pequeños cambios en la sintaxis.
Código
  1. int variableParaGuardarInputDelUsuario = 0;
  2. int variableParaGuardarElNumeroMayor = 0;
  3. while (variableParaGuardarInputDelUsuario > 0 || variableParaGuardarInputDelUsuario == 0)
  4. {
  5. cout << "usuario pon numero" <<endl;
  6. cin >> variableParaGuardarInputDelUsuario;
  7.  
  8.    if (variableParaGuardarElNumeroMayor >variableParaGuardarInputDelUsuario)
  9.    {
  10.    //nada
  11.    }
  12.  
  13.    else
  14.    {
  15.     variableParaGuardarElNumeroMayor = variableParaGuardarInputDelUsuario;
  16.     }
  17. }
  18.  
  19. cout << "El numero mayor es: " << variableParaGuardarElNumeroMayor;
  20. cin.get();
Deduzco que más o menos quieres esto.

Las lineas 1 y 2. Declaramos 2 variables del tipo SIGNED INT. Este tipo quiere decir que se aceptan número positivos y negativos. Es decir, numeros con SIGNO ENTEROS. Poner "signed int variable" es exactamente lo mismo que poner "int variable".

Linea 3. Usamos el bucle while. Traduccion a español el bucle mientras. La condicion entre parentesis tiene los elementos: variable mayorque 0 o variable iguala 0
Podrias traducir todo a español como: MIENTRAS el valor que contiene la VARIABLE sea MAYOR QUE 0 O el valor que contiene la VARIABLE sea IGUAL A 0 ....

Linea 4. Haz lo siguiente:

Linea 5. Muestra el texto entre comillas por la pantalla y salta de linea.

Linea 6. Almacena el número del usuario en la variable.

Linea 8. Si la variable numeroMayor es mayor que la variable numeroDelUsuario...

Linea 9. Haz esto:

Linea 10. En ese caso no vamos a hacer nada.

Linea 11. Hasta aquí.

Linea 13. En el caso contrario de que el numero de usuario sea mayor que el que tenemos guardado..

Linea 14. Haz esto:

Linea 15. Guardamos el nuevo numero, que sabemos que no es menor que nuestro numero mayor.

Linea 16. Hasta aquí.

Linea 17. Final del bucle donde se comprobará si se sigue cumpliendo la condición del bucle. Es decir, que el número del usuario no sea negativo. En caso de no ser negativo se repite el bucle. En caso de ser negativo se sale del bucle y se continua con la ejecución del programa.

Linea 19. Una vez fuera del bucle mlstramos el valor de la variable en la fuimos guardando el mayo numero del usuario a cada vuelta del bucle.

Linea 20. Pausamos el programa.

Este código está hecho para que lo entiendas y veas como se usan if y else y como funcionan las comprobaciones. Se puede mejorar mucho acortando el código y haciendo comprobaciones más precisas. Algo que deberías hacer por tu cuenta.

Tambien podrías adaptar el codigo para meterlo dentro de una funcion. Y hacer la llamada a la funcion en el bucle. Así el codigo quedaría mejor ordenado y sería reutilizable.

Código
  1. bool funcionObtenerMayor(parametro1, parametro2, ...);
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. int main()
  9. {
  10.  
  11.   while (condicion)
  12.   {
  13.    condicion = funcionObtenerMayor();
  14.   }
  15.  
  16. cin.get();
  17. return 0;
  18. }
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. bool funcionObtenerMayor(parametro1, parametro2, ...)
  27. {
  28. //lo que hace la funcion;
  29.  
  30. //si se introduzco numero negativo
  31. return false;
  32.  
  33. //en caso contrario
  34. return true;
  35. }

Esto haria lo mismo, pero mucho más organizado. Cuando tienes programas que hacen muchas cosas distintas, menus, etc. Es mejor así.


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

CIUDADANO Z

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: por mas que intento realizarlo no me sale como deberia es con bucle while
« Respuesta #2 en: 19 Junio 2019, 13:58 pm »

Gracias por responder al mensaje pero ya lo he resuelto aplicando un poco de logica

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,279 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
Cuando intento usar el DVD sale F:/"el nombre del directorio no es válido".
Windows
sonuca 1 5,603 Último mensaje 13 Agosto 2012, 12:52 pm
por Randomize
SSD No rinde como debería
Hardware
Kurolox 6 2,761 Último mensaje 23 Enero 2015, 15:25 pm
por Aprendiz-Oscuro
Cuando intento actualizar kali linux me sale esto,Con el comando apt-get update
GNU/Linux
ELKrAzY 3 15,832 Último mensaje 3 Noviembre 2018, 03:23 am
por camiuxg
Como frenar un bucle for con un bucle while en bash linux
Scripting
mario290386 0 2,058 Último mensaje 5 Mayo 2019, 13:58 pm
por mario290386
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines