Autor |
Mensaje |
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
Buenas, Estoy luchando con un programa y este procedimiento no me funciona. Alguien tiene una idea o ve algun error que no vi???
Gracias!!
Function Encontrado_padron(var fa:TARCHIVOALUMNO):boolean; {me dice si encuentra o no al padron solamente}
var
alu:alumno;
padron2:longint;
begin
writeln('ingrese nuevamente el padron del alumno');
readln(padron2);
reset(fa);
encontrado_padron:=false;
while (not eof) and (not encontrado_padron) do
begin
read(fa,alu);
if (alu.padron = padron2) then
encontrado_padron:= true
else
writeln('no se encuentra el cpadron del alumno,alumno no existente');
end;
close(fa);
end;
Function aprobado(var fc:TARCHIVOCURSADA; VAR fa:TARCHIVOALUMNO; var fm:TARCHIVOMATERIA): boolean;
var
padron:longint;
acta:actacursada;
mat:materia;
begin
reset(fc);
writeln('ingrese padron del alumno');
readln(padron);
Encontrado_padron(fa);
while(acta.notafinal >= 4) and(acta.notafinal<=10) do
begin
aprobado:=true;
writeln(acta.cod_materia);
writeln(mat.nombre);
writeln(acta.cod_acta);
writeln(acta.anio);
end;
end;
Gracias!!
|
|
|
|
|
|
|
|
|
Symbolic
Nivel 6
Edad: 33
Registrado: 25 Ago 2011
Mensajes: 204
Ubicación: Avellaneda
Carrera: Informática
|
|
No me acuerdo mucho de Pascal, pero en esta parte Encontrado_padron(fa); te olvidaste de asignarle eso a una variable boolean.
|
|
|
|
|
|
|
|
|
Franzl
Nivel 7
Edad: 33
Registrado: 23 Ago 2011
Mensajes: 384
Carrera: Mecánica
|
|
No tendría que ser Procedure?
|
|
|
|
|
|
|
|
|
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
Cita:
|
No me acuerdo mucho de Pascal, pero en esta parte Encontrado_padron(fa); te olvidaste de asignarle eso a una variable boolean.
|
lo llama al procedimiento de arriba, por eso no le asigne nada...
Cita:
|
No tendría que ser Procedure?
|
El primero queriamos saber solo si lo encontraba o no, por eso lo hicimos como funcion..
el segundo lo cambie, pero igual no me funciona, me sale algo como la matrix pero en pascal
|
|
|
|
|
|
|
|
|
Symbolic
Nivel 6
Edad: 33
Registrado: 25 Ago 2011
Mensajes: 204
Ubicación: Avellaneda
Carrera: Informática
|
|
Me refiero a que lo declaraste asi Function Encontrado_padron(var fa:TARCHIVOALUMNO):boolean;
Y abajo lo llamaste como un procedimiento.
|
|
|
|
|
|
|
|
|
Franzl
Nivel 7
Edad: 33
Registrado: 23 Ago 2011
Mensajes: 384
Carrera: Mecánica
|
|
Podrías indentar el código para facilitar su lectura??
lo podés hacer encerrándolo con
EDIT: ortografía
|
|
|
|
Última edición por Franzl el Dom Feb 19, 2012 5:35 pm, editado 1 vez
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
Podrias ser mas especifico cuando decis "no me funciona", que hace, te tira error, se cuelga, tira fruta...
|
|
|
|
_________________ ━━━━━┓ \\
┓┓┓┓┓┃
┓┓┓┓┓┃ ヽ○ノ
┓┓┓┓┓┃ /
┓┓┓┓┓┃ ノ)
┓┓┓┓┓┃
┓┓┓┓┓┃
▒▒▒▒▒▒▒▒▒▒▒▒▒▒
|
|
|
|
|
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
Cita:
|
Me refiero a que lo declaraste asi Function Encontrado_padron(var fa:TARCHIVOALUMNO):boolean;
Y abajo lo llamaste como un procedimiento.
|
es la idea de que sea un procedimiento.
Código:
|
Function Encontrado_padron(var fa:TARCHIVOALUMNO):boolean; {me dice si encuentra o no al padron solamente}
var
alu:alumno;
padron2:longint;
begin
writeln('ingrese nuevamente el padron del alumno');
readln(padron2);
reset(fa);
encontrado_padron:=false;
while (not eof) and (not encontrado_padron) do
begin
read(fa,alu);
if (alu.padron = padron2) then
encontrado_padron:= true
else
writeln('no se encuentra el cpadron del alumno,alumno no existente');
end;
close(fa);
end;
Function aprobado(var fc:TARCHIVOCURSADA; VAR fa:TARCHIVOALUMNO; var fm:TARCHIVOMATERIA): boolean;
var
padron:longint;
acta:actacursada;
mat:materia;
begin
reset(fc);
writeln('ingrese padron del alumno');
readln(padron);
Encontrado_padron(fa);
while(acta.notafinal >= 4) and(acta.notafinal<=10) do
begin
aprobado:=true;
writeln(acta.cod_materia);
writeln(mat.nombre);
writeln(acta.cod_acta);
writeln(acta.anio);
end;
end;
|
Gracias Franzl
|
|
|
|
|
|
|
|
|
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
Es como si fuera un ciclo de repeat infinito y nunca se termina... compila, pero cuando ejecuta pasa eso.
|
|
|
|
|
|
|
|
|
Franzl
Nivel 7
Edad: 33
Registrado: 23 Ago 2011
Mensajes: 384
Carrera: Mecánica
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
2 errores que encontre:
1ro que todo, escribis "no se encuentra padron", en cada iteracion del while.
2do estas escribiendo "aprobado:=true" y aprobado es una funcion, no recuerdo pascal, pero me parece que esta mal.
Edit: Lo tachado esta bien, asi era pascal
|
|
|
|
|
|
|
|
|
Symbolic
Nivel 6
Edad: 33
Registrado: 25 Ago 2011
Mensajes: 204
Ubicación: Avellaneda
Carrera: Informática
|
|
O sea vos queres hacer un procedimiento y no una funcion? xq si lo dejas asi no estas guardando en ningun lugar el booleano que te tiene que devolver Encontrado_padron, entonces como vas a saber cual padron existe y cual no?
EDIT: otra cosa es que te pedis leer el padron 2 veces, uno en aprobado y otro en encontrado_padron
|
|
|
|
Última edición por Symbolic el Dom Feb 19, 2012 5:48 pm, editado 1 vez
|
|
|
|
|
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
cuando escribi " no se encuentra padron" lo puse por el if que viene despues del while.
|
|
|
|
|
|
|
|
|
mafalda
Nivel 4
Edad: 33
Registrado: 15 Dic 2011
Mensajes: 114
Carrera: Informática
|
|
Cita:
|
O sea vos queres hacer un procedimiento y no una funcion? xq si lo dejas asi no estas guardando en ningun lugar el booleano que te tiene que devolver Encontrado_padron, entonces como vas a saber cual padron existe y cual no?
|
cuando uso el encontrado_padron hago q se ejecute solo esa opcion, no la uso como variable, igual me voy a fijar ese detalle bien
|
|
|
|
|
|
|
|
|
csebas
Nivel 9
Edad: 71
Registrado: 16 Feb 2009
Mensajes: 1634
Carrera: No especificada
|
|
Código:
|
encontrado_padron:=false;
while (not eof) and (not encontrado_padron) do
begin
read(fa,alu);
if (alu.padron = padron2) then
encontrado_padron:= true
else writeln('no se encuentra el cpadron del alumno,alumno no existente');
end;
|
seguimiento escribió:
|
Supongamos un archivo de 3 registros en el cual el 3ro es el que buscas.
entra al while
lee el registro
pregunta "es igual", da falso, entra el else,
escribe "no se encuentra padron"
Vuelve al while, y entra porque padron sigue falso y no es fin de archivo
lee registro
pregunta "es igual", da falso, entra el else,
escribe "no se encuentra padron".
vuelve al while porque neuvamente padron sigue falso y no es fin de archivo,
lee el registro
pregunta "es igual", da true, salis del while.
|
Capaz me equivoque porque hace mucho tiempo que vi pascal, pero pareceria que hace eso.
Afuera del while va un if ( encontrado_padron=false) writeln("no se encuentra padron")
|
|
|
|
|
|
|
|
|
|