PDA

Ver la versión completa : Ayuda con Pseudocodigo



Don Balon
21/04/2009, 22:03
Hola gente divina
Tengo que pasar esto a pseudocodigo:

Enunciado:

Tenemos una lista de 35 atletas con el nombre y puntaje obtenido en una competencia, consideramos qu no hay repetición ( de puntajes). Se desea saber quien tiene el mejor puntaje y cuál es. Y quién tiene el segundo mejor puntaje y cuál es.

Yo pude hacer hasta quien tiene el mejor puntaje y para sacar el segundo no se me ocurre como, les pediria ayuda pero no que me den la solucion sino algunas pistas.


Comienzo
Cont = 0, P = 0, R = 0
Repetir
Ingresar Nombre y Puntaje
Cont = Cont + 1
Si Puntaje > R entonces P = Nombre y R = Puntaje
Hasta que Cont = 35
mostrar " Primer puesto para P con un puntaje de R"
Fin


Saludos y gracias
.

vofijatee
22/04/2009, 17:19
Hmm, esta difícil…

2 dudas,
a)¿Viste vectores (arreglos,arrays)
b)¿Te corrigieron ese pseudocódigo?

Saludos.

GoD
22/04/2009, 20:01
Agrega otra variable mas , entonces cuando puntaje es mayor a R le asignas el valor de R a la nueva variable y asignas el valor de Puntaje a R, entonces en la nueva variable vas a tener siempre el valor inmediato mayor anterior, o sea el segundo mayor ^^

No te olvides de tener en cuenta el caso que en el primer ingreso te manden el valor mayor, porque si pasa eso entonces puntaje va a ser mayor a R cuando R es igual a cero y la nueva variable va a morir en cero. Es una pavada darle una solución a este caso asique te lo dejo a vos ;) si se te complica chifla ^^

Saludos!

Don Balon
22/04/2009, 21:12
Agrega otra variable mas , entonces cuando puntaje es mayor a R le asignas el valor de R a la nueva variable y asignas el valor de Puntaje a R, entonces en la nueva variable vas a tener siempre el valor inmediato mayor anterior, o sea el segundo mayor ^^

No te olvides de tener en cuenta el caso que en el primer ingreso te manden el valor mayor, porque si pasa eso entonces puntaje va a ser mayor a R cuando R es igual a cero y la nueva variable va a morir en cero. Es una pavada darle una solución a este caso asique te lo dejo a vos ;) si se te complica chifla ^^

Saludos!

La verdad no se como hacer para que R no tome el valor de 0 pero hay otro problemas mas grave, por ejemplo: Pedro hizo 40 pts. Guarda en N el puntaje y en R, despues Juan hizo 50, guarda en N 40 y en R 50 y si despues Pablo hace 45 pts, se caga todo.. :S porque el segundo mayor valor va a ser 45 y la variable N ya guardo 40. :S

GoD
23/04/2009, 10:59
La verdad no se como hacer para que R no tome el valor de 0 pero hay otro problemas mas grave, por ejemplo: Pedro hizo 40 pts. Guarda en N el puntaje y en R, despues Juan hizo 50, guarda en N 40 y en R 50 y si despues Pablo hace 45 pts, se caga todo.. :S porque el segundo mayor valor va a ser 45 y la variable N ya guardo 40. :S

Y prácticamente te respondiste solo, tenés que hacer una segunda comprobación cuando el ingreso no sea mayor a R que es de ver si es mayor a N entonces los guardas en N y problema resuelto.

El problema resuelto completo sería así:

Comienzo
Cont = 0, P = 0, R = 0 , N = 0, S = 0
Repetir
Ingresar Nombre y Puntaje
Cont = Cont + 1
Si Cont = 1 entonces //Si es el pirmer ingreso solo le asigno valor a R y a N lo dejo en cero
R = Puntaje
P = Nombre
SINO
Si Puntaje > R entonces
N = R
P = Nombre
R = Puntaje
SINO //aca compruebo si el puntaje es mayor a N para que asi tome el segundo puesto
Si Puntaje > N entonces
N = Puntaje
S = Nombre
Fin
Fin
Fin
Hasta que Cont = 35
mostrar " Primer puesto para P con un puntaje de R"
mostrar " Segundo puesto para S con un puntaje de N"
Fin

MECHAS
23/04/2009, 11:30
Hmm, esta difícil…

2 dudas,
a)¿Viste vectores (arreglos,arrays)
b)¿Te corrigieron ese pseudocódigo?

Saludos.

Primero que nada que pseudocodigo se hace a mano....
Segundo arrays y arreglos, recien lo va a ver cuando empiece a usar algun lenguaje de programacion.

God puso la posta :)

Don Balon
23/04/2009, 22:29
God puso la posta :)

Sí pero Godd te falto poner estas 2 cositas para que funcionara correctamente. Porque si las notas ingresadas dada la casualidad estaban en orden creciente, S no se setearia nunca, en caso contrario S no se seteria de nuevo si hubiera otro segundo mayor valor encontrado.



Comienzo
Cont = 0, P = "", N = 0, S = "", R = 0
Repetir
Ingresar Nombre y Puntaje
Cont = Cont + 1
Si Cont = 1 entonces
R = Puntaje
P = Nombre
S = Nombre
Sino Si Puntaje > R entonces
N = R
S = P
P = Nombre
R = Puntaje
Sino Si Puntaje > N entonces
N = Puntaje
S = Nombre
Hasta que Cont = 35
Mostrar " Primer puesto para P con un puntaje de R"
Mostrar " Segundo puesto para S con un puntaje de N"
Fin

Ya entendi :P saludos

GoD
24/04/2009, 13:02
El S=P faltó, eso es correcto pero la primer corrección que hiciste NO va, o sea "S = Nombre" no va.
Y lo del orden de ingreso de las notas despreocupate, así como está podés ingresar en el orden que quieras y va a funcionar.

Saludos!

Don Balon
24/04/2009, 21:31
Si, gracias nuevamente GoD

EPP
26/07/2009, 04:07
Primero que nada que pseudocodigo se hace a mano....
Segundo arrays y arreglos, recien lo va a ver cuando empiece a usar algun lenguaje de programacion.

God puso la posta :)

Depende, cuando cursé Algoritmos y Estructuras de Datos en Ing allá por el año 2000 en la UTN trabajabamos con registros de longitud variable y demás. Estoy bastante alejado del tema pero creeria que no necesita de que le enseñen algun lenguaje en particular para ver el concepto de arreglo...

:D

Saludos