Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 10:35 am  Asunto:  [AYUDA] Ejercicio en pascal Responder citandoFin de la PáginaVolver arriba

Buenas tengo un problema con este programa, con el procedimiento llamado Buscar. El tema es así cargo en vectores nombre de distritos y nombre de candidatos y luego leo desde un archivo la info con votos (los datos del archivo son el distrito y el nombre de candidato),lo q tengo q hacer es poner los resultados en una matriz (array) a traves de esa funcion busqueda, pero no funciona... no se por que...

Código:
program MP2_TP;
uses
crt;
type
rango=0..100;
vector=array[rango]of string;
matriz=array[rango,rango]of integer;

var
numdist,numcand:rango;
VCodDist,VNomDist,VNomCandi,VPartido:vector;
matrizvotos:matriz;
p: rango;

Procedure CargarDistritos( var numdist: rango; var VCodDist: vector; var VNomDist: vector );
var
i: rango;
distrito: text;
nomarch: string[15];
begin
write('Ingrese nombre de archivo de distritos: ');
readln(nomarch);
assign(distrito,nomarch);
reset(distrito);
i:=0;
repeat
begin
i:=i+1;
readln(distrito, VCodDist[i], VNomDist[i]);
end;
until EOF (distrito);
numdist:=i;
close(distrito);
end;

Procedure CargarCandidatos( var numcand: rango; var VNomCandi: vector; var VPartido: vector);
var
i: rango;
Candidatos: text;
nomarch: string[15];
begin
write('Ingrese nombre de archivo de Candidatos: ');
readln(nomarch);
assign(Candidatos,nomarch);
reset(Candidatos);
i:=0;
repeat
begin
i:=i+1;
readln(Candidatos, VNomCandi[i], VPartido[i]);
end;
until EOF (Candidatos);
numcand:=i;
close(Candidatos);
end;


Function Buscar( n: rango; v: vector; j: string; var p: rango ):integer;
begin
        p := 1;
       while ( p <= n ) and ( v[p] <j> n then p:=0;
end;

Procedure IniciarMatriz( numdist, numcand: rango; var mat: matriz );
var
i, j: rango;
begin
   for i:=1 to numdist do
       for j:=1 to numcand do
          mat[i,j] := 0;
end;

Procedure CargarMatriz( numdist, numcand: rango; var VCodDist: vector; var VNomCandi: vector ; var matrizvotos: matriz);
var
codigo,nomarch, nombre: string[15];
cant: integer;
i,fila, columna: rango;
votos: text;
begin
        write('Ingrese nombre de archivo de votos: ');
        readln(nomarch);
        assign(votos,nomarch);
        reset(votos);
        writeln;
        while not EOF(votos) do
                begin
                readln(votos,codigo,nombre);
                columna:=buscar(numdist,VCodDist,codigo,i);
                fila:=buscar(numcand,VNomCandi,nombre,i);
                matrizvotos[fila,columna]:= matrizvotos[fila,columna] + 1;
                end;
end;

Procedure MostrarMatriz( n, m: rango; var mat: matriz );
 var
    i, j: rango;
begin
        writeln;
        write(' Columna');
         for j:=1 to m do
         write(j:10);
         writeln;
         writeln (' Filas');
         writeln;
         for i:=1 to n do
         begin
                write(i:6);
                for j:=1 to m do
                        write(mat[i,j]:10);
                        writeln;
                        writeln;
         end;
end;

Procedure MostrarVector( n: rango; var v: vector);
 var
   i: rango;
 begin
  for i:=1 to n do
   begin
   writeln(v[i]);
   writeln;
   end;
 end;




 begin
clrscr;
Writeln('Bienvenido a las Elecciones 2007');
CargarDistritos(numdist,VCodDist,VNomDist);
mostrarvector(numdist,VCodDist);
readln;
writeln;
writeln;
CargarCandidatos(numcand,VNomCandi,VPartido);
mostrarvector(numcand,VNomCandi);
readln;
writeln;
writeln;
Iniciarmatriz(numcand,numdist,matrizvotos);
cargarmatriz(numcand,numdist,VCodDist,VNomCandi,matrizvotos);
mostrarmatriz(numcand,numdist,matrizvotos);
readln;
end.





Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Rada
Moderador


Edad: 37
Registrado: 10 Abr 2006
Mensajes: 2728
Ubicación: Caballito
Carrera: Informática
blank.gif
MensajePublicado: Jue Nov 22, 2007 11:43 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Por lo que vi la Function Buscar esta mal sintacticamente.

while ( p <= n ) and ( v[p] <j> n then p:=0;

que es eso???

_________________
[CAMPAÑA] Colaboremos entre todos por un foro más ordenado (click aquí)
[CAMPAÑA] Hacer un tópico por cada curso y con información ¡útil! (click aquí)


Gabba gabba we accept you we accept you one of us

Tauro Género:Masculino Tigre OcultoGalería Personal de RadaVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 12:14 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

debe haber salido mal, es:

Procedura Buscar( n: rango; v: vector; j: string; var p: rango );
begin
p := 1;
while ( p <= n ) and ( v[p] <j> n then p:=0;
end;


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Jue Nov 22, 2007 12:23 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Martinldz escribió:
debe haber salido mal, es:

Procedura Buscar( n: rango; v: vector; j: string; var p: rango );
begin
p := 1;
while ( p <= n ) and ( v[p] <j> n then p:=0;
end;


Ese es un problema que tiene el foro con los "mayor" y "menor"

_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 12:32 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Ahora si:
Image


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 12:33 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Donde dice Procedua deberia decir Procedure


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Jue Nov 22, 2007 1:11 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Te recomiendo hacerlo en una funcion, porque estas devolviendo el numero de posicion en caso de encontrarlo y un 0 en caso de no encontrarlo.

Pero tu codigo de buscar parece que funciona bien, debe estar en otro lado el error.

Probaste si carga todos los datos bien? y que los imprime bien?

PD: tenia ganas de programar un poco en pascal Oops

Código:


Function Buscar (n:rango;v:vector;string_buscado:string):integer;

var

i:integer;
encontrado:boolean;

begin

i:=0;
encontrado:=false;

while ((not encontrado) and ( i<n)) do
begin
inc(i);
if (v[i] = string_buscado) then
encontrado:=true;
end;

if (encontrado) then
buscar:=i
else
buscar:=0;

end;


_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 1:26 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

gracias Dx9, me compila pero la matriz me sigue quedando toda en 0, no me suma los votos Sad


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Jue Nov 22, 2007 1:50 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

en:

columna:=buscar(numdist,VCodDist,codigo,i);
fila:=buscar(numcand,VNomCandi,nombre,i);

mete un
writeln(columna);
writeln(fila);

Y ya que esta:

writeln(matrizvotos[fila,columna]);

a ver si te imprime las correctas..

Y si te muestra todo bien, es un problema de los "var" :P

Otra cosa no se me ocurre NO toy oxidado

_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 2:07 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

hice lo q me decis y nose... me muestra la misma info...


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Jue Nov 22, 2007 2:26 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Si te imprime todo correctamente, debe ser un problema con el pasaje por referencia.

te recomiendo:

1.
Procedure CargarMatriz( numdist, numcand: rango; var VCodDist: vector; var VNomCandi: vector ; var matrizvotos: matriz);

cambiar por:

Procedure CargarMatriz( numdist, numcand: rango; var VCodDist: vector; var VNomCandi: vector ; var mat: matriz);

2. Mover el var principal abajo, asi evitas problemas.

Program

funciones

var

begin

end.

3. Esperar a alguien que sepa mas Mr. Green

_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 2:31 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Ahora pruebo lo q me decís. Gracias por la ayuda!


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
4WD
Administrador


Edad: 39
Registrado: 07 Sep 2006
Mensajes: 2430
Ubicación: Ingeniero
Carrera: Mecánica
argentina.gif
MensajePublicado: Jue Nov 22, 2007 3:05 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Me parece que tenés un problema con la FUNCTION buscar. Justamente es una función (no un procedimiento) y fijate que ¡no devuelve nada!. Eso no sería problemático si no intentaras usar el resultado devuelto... :P
Pascal no te avisa cuando te olvidaste un ret para una function. Fue un bug que me llevó bastante trackear en el tp de numérico Evil or Very Mad

PD: El parser del foro tiene un problema con los ">", incluso dentro de los CODE.

_________________
ImageImage
ImageImage
ImageImage

Escorpio Género:Masculino Rata OfflineGalería Personal de 4WDVer perfil de usuarioEnviar mensaje privado
Martinldz
Nivel 3


Edad: 39
Registrado: 21 Nov 2006
Mensajes: 45
Ubicación: Lomas de Zamora
Carrera: Agrimensura
blank.gif
MensajePublicado: Jue Nov 22, 2007 3:27 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

no entiendo SadSadSadSadSad


Geminis Género:Masculino Rata OcultoGalería Personal de MartinldzVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Rada
Moderador


Edad: 37
Registrado: 10 Abr 2006
Mensajes: 2728
Ubicación: Caballito
Carrera: Informática
blank.gif
MensajePublicado: Vie Nov 23, 2007 1:13 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

fijate q vos haces lo siguiente:

columna:=buscar(numdist,VCodDist,codigo,i);
fila:=buscar(numcand,VNomCandi,nombre,i);

Esto solo lo podes hacer en caso de que buscar sea una Function, sino no podes

_________________
[CAMPAÑA] Colaboremos entre todos por un foro más ordenado (click aquí)
[CAMPAÑA] Hacer un tópico por cada curso y con información ¡útil! (click aquí)


Gabba gabba we accept you we accept you one of us

Tauro Género:Masculino Tigre OcultoGalería Personal de RadaVer perfil de usuarioEnviar mensaje privadoEnviar emailYahoo MessengerMSN Messenger
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.6786s ][ Pedidos: 20 (0.5619s) ]