Problema con procedimientos
Publicado por nicolas (1 intervención) el 06/05/2011 23:45:33
Hola programadoes, no soy muy fanatico de pedir ayuda en internet, pero teniendo en cuenta que llegue a un punto en el que deliro para poder encontrar la solucion desidi postearlo aca a ver si me pueden dar una mano a ver que esta mal en el codigo, en el codigo hay un par de llamadas a procedimientos, los cuales estan bien escritos, asi que no tiene importancia, lo importante es lo que devuelven. El procedimiento tresmas encuentra entre un vector de 6 posiciones las tres mas visitadas (ya que es un programa de vacaciones y el vector son las posibles ciudades destino y la cantidad de veces que fueron visitadas) y esas tres ciudades mas vicitadas las posiciona en los tres primeros lugares del vector
PROCEDURE PORCENTAJE (VAR a:terminal; VAR l:lista; porcen1:real; porcen2:real; var v:vec);
VAR
aux:lista;
ccomn, ccvue, TOT: integer;
BEGIN
ccomn:=0;
ccvue:=0;
TRESMAS(a,l,v);
RESET(a);
aux:=l;
WHILE aux <> nil DO
Begin
IF aux^.dato.citydest = V[1].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
{Contador para los turistas que viajaron en ¢mnibus}
ccomn:=ccomn+aux^.dato.cantpas
ELSE
{Contador para los turistas que viajaron en ¢mnibus}
ccvue:=ccvue+aux^.dato.cantpas;
end;
IF aux^.dato.citydest = V[2].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
ccomn:=ccomn+aux^.dato.cantpas
ELSE
ccvue:=ccvue+aux^.dato.cantpas;
end;
IF aux^.dato.citydest = V[3].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
ccomn:=ccomn+aux^.dato.cantpas
ELSE
ccvue:=ccvue+aux^.dato.cantpas;
end;
aux:=aux^.psig;
end;
TOT:=ccomn+ccvue;
PORCEN1:=(ccomn*100)/TOT;
PORCEN2:=(ccvue*100)/TOT;
WRITELN('El porcentaje de turistas que viajó en ómnibus a las ciudades más visitadas es :', PORCEN1);
WRITELN('El porcentaje de turistas que viajó en avión a las ciudades más visitadas es :', PORCEN2);
Readkey;
CLOSE (a);
END;
PROCEDURE PORCENTAJE (VAR a:terminal; VAR l:lista; porcen1:real; porcen2:real; var v:vec);
VAR
aux:lista;
ccomn, ccvue, TOT: integer;
BEGIN
ccomn:=0;
ccvue:=0;
TRESMAS(a,l,v);
RESET(a);
aux:=l;
WHILE aux <> nil DO
Begin
IF aux^.dato.citydest = V[1].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
{Contador para los turistas que viajaron en ¢mnibus}
ccomn:=ccomn+aux^.dato.cantpas
ELSE
{Contador para los turistas que viajaron en ¢mnibus}
ccvue:=ccvue+aux^.dato.cantpas;
end;
IF aux^.dato.citydest = V[2].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
ccomn:=ccomn+aux^.dato.cantpas
ELSE
ccvue:=ccvue+aux^.dato.cantpas;
end;
IF aux^.dato.citydest = V[3].nom_ciudad THEN
Begin
IF aux^.dato.MEDIO='omnibus' THEN
ccomn:=ccomn+aux^.dato.cantpas
ELSE
ccvue:=ccvue+aux^.dato.cantpas;
end;
aux:=aux^.psig;
end;
TOT:=ccomn+ccvue;
PORCEN1:=(ccomn*100)/TOT;
PORCEN2:=(ccvue*100)/TOT;
WRITELN('El porcentaje de turistas que viajó en ómnibus a las ciudades más visitadas es :', PORCEN1);
WRITELN('El porcentaje de turistas que viajó en avión a las ciudades más visitadas es :', PORCEN2);
Readkey;
CLOSE (a);
END;
Valora esta pregunta


0