UTNianos

Versión completa: [Algoritmos y Estructuras de datos]Duda con ejercicio
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estaba haciendo la guia de algoritmos y me encontre con este ejercicio: Ej. MI-21: Dados N valores informar el mayor, el menor y en que posición del conjunto fueron ingresados(la idea no es usar funciones aca porque esta hecho para practicar ciclo for,since y while).

A mi lo que se me ocurrio es hacer un ciclo for desde I=1 a n .Al maximo le asigno 1.Despues dentro del ciclo: Leo el valor, a minimo le asigno:valor(esto es lo q no se si esta bien) luego comparo con un IF valor > max THEN: a maximo le asigno valor y a las poision le asigno:I
ELSE: Ahora hago una comparacion para el minimo: If: valor<min,Then:a minimo le asigno valor y la posicion del minimo i. Por ultimo fuera del ciclo muestro maximo y su posicion y minimo y su posicion.

Espero q se haya entendido mas o menos lo q pense porque era mas kilombo escribirlo como en pascal =P . Mi duda es como inicializar el minimo y si esta bien pensado su calculo. Si alguien lo sabe se agradece porque esta duda me esta trabando con los ejercicios q vienen despues.
Hola,
El problema de si haces un for de 1 a n al principio, deberías saber cuántos valores te va a ingresar.. o sea, el n, en este caso.. Y eso no lo sabes, a menos q se lo pidas al usuario cosa q no es muy copada q digamos..
Por esto debería utilizar un while, utilizando un código inválido, como podría ser el 0 si los valores a ingresar son naturales por ejemplo.. (cosa que en el ejercicio no lo dice, pero bueno, asumamos que sí para que explicar el ejercicio sea más simple)
Cuando ingresamos por primera vez al ciclo while, para esto usa un flag, que esté en true afuera del while, y cuando hagas si es primera vez y de verdadero, al flag le pones el false, y por supuesto, SOLO EN ESTE CASO , deberíamos tomar como min y max, el valor con su posición, y luego cada vez q ingresa un nuevo valor, o sea ya no es la primera vez, haces las validaciones con IF que comentaste arriba. Una vez q salga del while (q va a ser cuando el tipo se canso de cargar), al final vas a mostrar el valor min y max con sus posiciones correspondientes..

Si tenes alguna duda, mandame tu consulta a ver si te puedo ayudar..
Saludos!!
No entendi lo del flag
Con flag se refiere a una variable booleana, que tome los valores true o false dependiendo de la situación en la que te encuentres.
(16-05-2013 17:43)nanuiit escribió: [ -> ]Con flag se refiere a una variable booleana, que tome los valores true o false dependiendo de la situación en la que te encuentres.

Exacto!! Es una banderita de prendido o apagado, una variable booleana como dijo nanuiit .. En este caso, sería una banderita de primera vez: si es la primera vez que entro al while, la variable booleana va a venir con valor true (que lo cargas antes de el while), y dentro del while si esa banderita es true, ejecuto las sentencias necesarias y luego le tengo que asignar valor false.. la 2°, 3°..eneava vez que entre al while, esa banderita va a tener el valor false, por lo que no va a ejecutar esas sentencias únicas..
Te quedaría algo así:

PraVez <- True;
Read(Valor);
While Valor<>0 do
begin
If PraVez = True then
Max <- Valor;
Min <- Valor;
PraVez <- False;
Else
Sentencias If de comparaciones de max y min;
End;
End;
Perfecto, ahora entendi muchisimas gracias =)
URLs de referencia