Problema de java. (Sencillo)

Koksis

Hoy he tenido un examen de programación de primero de DAW. Como soy una cateta con las matemáticas muchas cosas me cuestan, pero este problema me tiene loquísima. En clase (no sé si porque todos están tan verdes como yo o por qué) nadie ha llegado a poder resolverlo.

El enunciado es muy simple: Propón un algoritmo para determinar el alumno más alto de los Ciclos Formativos.

Es fácil sacarte el máximo de un determinado número de resultados, pero aquí tienes que hacer un bucle que te diga alturas de alumnos y luego te diga cuál es la altura mayor. No sé si en algún momento lo piensa corregir pero lo necesito saber ya, nada de lo que hago me devuelve lo que quiero y tengo mucha curiosidad.

Repito que estoy en primero y llevamos mes y medio de clase. Seguramente se resuelva fácil pero no me da el coco.

B

Pillas variable, inicias a 0,
Recorres alumnos
Pintas los alumnos
if altura del alumno > variable
variable = altura del alumno
Fin de bucle.
Pintas la variable

1 1 respuesta
Fyn4r

Asumo que sabes hacer un while no? pues es un while y un if

KinachO

Os han enseñado a hacer ya una interfaz en visual basic para determinar la ip del asesino? Sin eso no puedes.

3
Koksis

#2 Vale, creo que lo tengo, con Do pido que me de una altura, en el if hago altura>variable y variable=altura.
Pero para que me deje terminar el bucle, en el While tengo que pedir que me devuelva algo por pantalla, ¿no?
Y después ya imprimir por pantalla cuál es la máxima.

Me explico como el culo.

3 respuestas
Ultrajex

Coges todos los datos.
Pones el maximo y lo que sea que identifique al alumno (Nombre, id, etc)
Recorres bucle, si el elemento es mayor o igual que tu maximo sustituyes ambos campos.

Si era lo que he entendido eso?

Grise
#5Koksis:

Pero para que me deje terminar el bucle, en el While tengo que pedir que me devuelva algo por pantalla, ¿no?

Buffffff, no quiero pensar como has hecho el while porque puede ser escalofriante.

El bucle se termina cuando se incumple la condición de entrada, que en tu caso será cuando termines de recorrer el bucle, no hace falta devolver nada ni que el usuario escriba nada. Fuera del while pones el print e ya.

B

#5 Yo lo pondría con el for.
El bucle debe terminar con el ultimo alumno, si comparas la altura de 3 alumnos y estos tienen 1, 2 y 3 si en la segunda iteración te quedas con el 2 y terminas el bucle no comprobarías la ultima altura.

HeXaN

Papel y boli. Así no vas por buen camino.

4 2 respuestas
Grise

#9 Haz lo tuyo pato, que en este hilo hace falta.

1
Cryy

#9 +1 a esto, imaginarse las cosas al aire es complicado

A parte vendría bien saber que es lo que habéis dado hasta ahora y que tenéis que usar para hacerlo o si os han dado vía libre. Al final lo importante es que entiendas como funciona la cosa, no ver que sale y ya.

B

#5 do { .... } while (altura != -1);

Cuando quieras finalizar el bucle metes -1 o lo que sea que pongas en la condición y fuera. Lo suyo es que también pongas comprobaciones en la condición de while para comprobar que la altura es "real" xD.

1 respuesta
totespare

Consejo, antes de programar intenta hacerlo en pseudocódigo, si no te sale así la solución, no te saldrá programando

Koksis

#12 Joder, gracias. Así es como lo he hecho, y me funciona.

do {System.out.println("Indica la altura");
altura=tec.nextDouble();
if (altura>b) {
b=altura;}
System.out.println("Pulsa -1 para acabar");
}
while (altura!=-1F);
System.out.println(b + "es la altura mayor.");

1 respuesta
B

Estas en primero, que acaba de empezar el curso y ya estáis dando problemas con bucles?

buen instituto

1 respuesta
Koksis

#15 ¿Es sarcasmo?

1 respuesta
B

#16 no, lo digo de verdad xD. En mi caso hasta el segundo trimestre no dimos nada de java

1 2 respuestas
B

#14 Consejos: tendrías que hacer comprobaciones a la altura que mete el usuario, que la altura sea de tipo Float ya que es el tipo de datos para decimales "pequeños", en caso de que la variable vaya almacenar decimales más grandes se debe de usar Double, y pon 0 en vez de -1, queda más "bonito" xD.

Hay mil maneras de hacer el ejercicio que te piden, pero con lo que has hecho es suficiente y más si solo has llegado hasta los bucles.

1
pantocreitor

#17 Yo empecé a hacer DAW el año pasado y teníamos una asignatura solo de JAVA. En 3 semansa o así estábamos mas que metidos en bucles y tal.

0nLy

#17 Cambia de centro.

2
afhn
spoiler

en vez de meter a pelo los datos en el array, el while para añadir.

necesitas leetcode y al toque o no pasas de primero. @desu -senpai te puede enseñar.

2 respuestas
B
// A sample Java program to sort an array of integers 
// using Arrays.sort(). It by default sorts in 
// ascending order 
import java.util.Arrays; 
  
public class SortExample { public static void main(String[] args) { // Our arr contains 8 elements int[] arr = {13, 7, 6, 45, 21, 9, 101, 102};
Arrays.sort(arr); System.out.printf("Modified arr[] : %s", Arrays.toString(arr)); } }
Modified arr[] : [6, 7, 9, 13, 21, 45, 101, 102]
2 respuestas
privet

#21 esas funciones, las metes pa hacerme el chulo o qué?

1 respuesta
afhn

#23 el qué?

1 respuesta
privet

#24 .stream(listaAlturas).max().getAsDouble();

Hay que ponerle cosas basicas, a alguien que es nuevo

1 1 respuesta
B

#22 Si se pone a usar métodos antes de pensar el algoritmo no va a aprender a programar.

Boli y papel. Te ayudará mucho. Si te pones directamente a intentar resolver el ejercicio escribiendo el código, vas a fracasar, y esto seguramente os lo haya dicho el profesor y todos hayáis pasado de su culo.

Cuando creas que no puedes resolver el ejercicio de ninguna manera, vuelve a pensarlo.

1
Fyn4r

#21 #22 para poner eso no pongais nada xd

2 2 respuestas
B

#27 no pone que no se pueda usar funciones, a mi me pusieron en la universidad la maxima nota por copypastear exactamente lo que me pedian. (obviamente puse como buen estudiante el enlace de copia)

La correcion del profesor fue: " Tienes toda la razon, el año que viene lo cambiamos".

2 respuestas
afhn

#25 mejor que aprenda con dureza desde el principio o le pasará como a mi, casi un año y medio y todavía no sé programar.

#27 🤷‍♂️

1 respuesta
B

#28 Yo he dado por hecho que #1 no sabe ni lo que es un array.