[ Foro de Pascal ]

duda al calcular en un vector el mayor...

11-Aug-2011 16:19
oscar gomez
3 Respuestas

Cordial saludo profesor Nacho.
Agradecerte siempre tu ayuda y tu valioso tiempo y esperando hayas tenido unas merecidas vacaciones.

Profesor es que tengo un problema cuando quiero obtener el mayor de un vector en mi caso tengo lo siguiente:

 // CANDIDATO MAS VOTADO SEGUN SUS VOTACIONES
         mayvotacion=suma_votaciones_candidato[1];
          for i:=2 to 4 do
            if (suma_votaciones_candidato[i]> mayvotacion) then
               begin
                 mayvotacion=suma_votaciones_candidato[i];
                 indice_candidato=i;  
               end;
       
write("el candidato mas votado fue :',candidatos[indice_candidato]");

writeln;
write("con una votacion de : ",mayvotacion," votos");    

claro el problema lo tengo creo y por favor corrigeme,en que si es el primer candidato el que obtiene el mayor valor en las votaciones, la variable indice_candidato , no almacenaria en este caso ningun valor verdad? como podria hacer profesor? ayudame por favor a tener correcto el codigo? mil gracias por tu ayuda.


11-Aug-2011 18:15
matias norry

hola, mira, no entiendo bien cual es tu problema, me gustaria ver el programa completo, pero si lo que vos queres es mostrar el numero de cantidato por pantalla lo que tenes que hacer es asignarle a indice_candidato el valor de la posicion, o sea "i", en tu caso vos pones que es igual, yo lo que haria es poner de la siguiente manera:  indice_candidato:=i , o sea, a indice_candidato le asigno el valor de i y ahi deberia funcionar correctamente, si es que a eso te referis, igual creo que el que sabe es nacho asi que el puede ser mas claro, quizas estoy equivocado, bueno, mucha suerte y espero que puedas terminarlo al programa, saludos!!!


11-Aug-2011 18:42
oscar gomez


Gracias por responder pero creo que no viste la parte de codigo que envie, pues si lo miras bien si que asigno a indice_candidato:= i;

sin embargo y esta pregunta va para el profesor nacho y es lo siguiente creo que la solucion la he obtenido de la siguiente manera:( sin embargo me gustaria saber el visto bueno del profesor nacho o si por el contrario debe hacerse de otra forma)


// CANDIDATO MAS VOTADO SEGUN SUS VOTACIONES
         mayvotacion=suma_votaciones_candidato[1];
   ***   mayvotacion:=1;
         for i:=2 to 4 do
           if (suma_votaciones_candidato[i]> mayvotacion) then
               begin
                 mayvotacion=suma_votaciones_candidato[i];
                 indice_candidato=i;  
               end;
       
write("el candidato mas votado fue :',candidatos[indice_candidato]");

writeln;
write("con una votacion de : ",mayvotacion," votos");    

la modificacion que he hecho simplemente es agregar la linea donde estan los ***

espero este correcta mi solucion o si en algo de concepto estoy fallando?

espero su respuesta como siempre profesor nacho y mil gracias por su atencion.


11-Aug-2011 23:38
Antonio P.G.

¡Hola Óscar!

¡Pero bueno, hombre, si casi lo tienes!

Lo único que tienes que hacer es, antes de que comience el bucle asignarle el valor '1' a la variable del índice, al igual que hiciste lo correspondiente con la variable "mayvotacion" al asignarle "suma_votaciones_candidato[1]".

¡Por cierto, vigila esos ":=", que no son "="! :-)

¡Un saludo y buen verano!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)