por mas que intento realizarlo no me sale como deberia es con bucle while

Iniciado por CIUDADANO Z, 17 Junio 2019, 23:29 PM

0 Miembros y 1 Visitante están viendo este tema.

CIUDADANO Z

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.

@XSStringManolo

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 (cpp) [Seleccionar]
int variableParaGuardarInputDelUsuario = 0;
int variableParaGuardarElNumeroMayor = 0;
while (variableParaGuardarInputDelUsuario > 0 || variableParaGuardarInputDelUsuario == 0)
{
cout << "usuario pon numero" <<endl;
cin >> variableParaGuardarInputDelUsuario;

    if (variableParaGuardarElNumeroMayor >variableParaGuardarInputDelUsuario)
    {
    //nada
    }
   
    else
    {
     variableParaGuardarElNumeroMayor = variableParaGuardarInputDelUsuario;
     }
}

cout << "El numero mayor es: " << variableParaGuardarElNumeroMayor;
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 (cpp) [Seleccionar]
bool funcionObtenerMayor(parametro1, parametro2, ...);






int main()
{
   
   while (condicion)
   {
    condicion = funcionObtenerMayor();
   }

cin.get();
return 0;
}







bool funcionObtenerMayor(parametro1, parametro2, ...)
{
//lo que hace la funcion;

//si se introduzco numero negativo
return false;

//en caso contrario
return true;
}


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

CIUDADANO Z

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