
Por favor ayuda urgente en corrección de programa
Publicado por Tony Garcia (1 intervención) el 01/12/2014 17:01:43
Tengo este programa, el profesor solo nos dio la base (lo que esta en mayusculas) pero no se si tenga error en cuando a la carga de archivos , por que al mmomento de tratar de continuar el juego, este se abre pero no carga lo datos guardados, si alguien me pudiera ayudar a ver mi error y corregirlo seria genial, de ante mano gracias
program Untitled;
uses crt;
TYPE tipo_punt = ^tipo_nodo;
tipo_nodo = record
dato: string;
si, no: tipo_punt;
end;
var opcion,continuar, respuesta :char;
si, no, raiz, punt, anterior : tipo_punt;
ANIMAL, PREGUNTA : STRING;
Var fan : file of tipo_punt;
{ temporal : file of tipo_punt; }
Procedure crearju;
Begin
Assign(fan,'animales.dat');
{$I-}
Reset(fan);
{$I+}
If(IoResult<>0) Then
Rewrite(fan);
NEW(RAIZ);
RAIZ^.DATO := 'VIVE EN EL AGUA';
NEW(SI);
SI^.DATO := 'TIBURON';
SI^.SI := NIL; SI^.NO := NIL; RAIZ^.SI := SI;
NEW(NO);
NO^.DATO := 'RATON' ; NO^.SI := NIL; NO^.NO := NIL; RAIZ^.NO := NO;
write(fan,RAIZ);
close(fan);
WRITELN('Preparandose para inciar juego, precione tecla para continuar');
readkey;
exit;
end;
Procedure jug;
Begin
clrscr;
WHILE CONTINUAR = 'S' DO
BEGIN
clrscr;
Assign(fan,'animales.dat');
{$I-}
Reset(fan);
{$I+}
Read(fan,RAIZ);
WRITELN('PIENSE EN UN ANIMAL');
PUNT := RAIZ;
WHILE PUNT <> NIL DO
BEGIN
WRITE('¨',PUNT^.DATO,'? (S/N): ');
READLN(RESPUESTA);
ANTERIOR := PUNT;
IF UPCASE(RESPUESTA) = 'S' THEN PUNT := PUNT^.SI;
IF UPCASE(RESPUESTA) = 'N' THEN PUNT := PUNT^.NO;
END;
IF UPCASE(RESPUESTA) = 'S'
THEN BEGIN
WRITE('HE GANADO');
readkey;
Close(fan);
exit;
END
ELSE BEGIN
NEW(SI); SI^.SI := NIL; SI^.NO := NIL;
NEW(NO); NO^.SI := NIL; NO^.NO := NIL;
WRITELN('HE PERDIDO, INGRESE EL ANIMAL QUE ESTABA PENSANDO');
READLN(ANIMAL);
WRITE('INGRESE UNA PREGUNTA QUE DIFERENCIE A ', ANIMAL);
WRITELN(' DE ', ANTERIOR^.DATO);
READLN(PREGUNTA);
WRITE('CUAL ES LA RESPUESTA DE ', PREGUNTA, ' PARA ', ANIMAL, '(S/N): ');
READLN(RESPUESTA);
IF UPCASE(RESPUESTA) = 'S'
THEN BEGIN
SI^.DATO := ANIMAL;
NO^.DATO := ANTERIOR^.DATO;
ANTERIOR^.DATO := PREGUNTA;
ANTERIOR^.SI := SI;
ANTERIOR^.NO := NO;
END;
IF UPCASE(RESPUESTA) = 'N'
THEN BEGIN
SI^.DATO := ANTERIOR^.DATO;
NO^.DATO := ANIMAL;
ANTERIOR^.DATO := PREGUNTA;
ANTERIOR^.SI := SI;
ANTERIOR^.NO := NO;
END;
WRITELN('GRACIAS AHORA CONOZCO OTRO ANIMAL');
END;
write(fan,RAIZ);
close(fan);
WRITE('¨DESEA CONTINUAR (S/N): ');
READLN(CONTINUAR);
end;
exit;
end;
Procedure res;
begin
writeln(' Datos Respaldados (Proximamente)');
readkey;
end;
Procedure rec;
begin
writeln(' Datos Cargados (Proximamente)');
readkey;
end;
Procedure lisan;
begin
clrscr;
writeln(' Listado de Animales que conosco (Proximamente)');
readkey;
end;
Procedure lispreg;
begin
clrscr;
writeln(' Listado de preguntas que conosco (Proximamente)');
readkey;
end;
Procedure lis;
begin
repeat
clrscr;
writeln(' Escoja que lista desea ver');
writeln('1./ Animales ');
writeln('2./ Preguntas ');
writeln('3./ Salir al menu anterior');
readln(opcion);
case opcion of
'1': lisan;
'2': lispreg;
'3': exit;
end;
until opcion = '3';
readkey;
end;
begin
repeat
clrscr;
CONTINUAR := 'S';
writeln(' Menu Principal de Juego');
writeln('0./ Inicialisar juego nuevo');
writeln('1./ Jugar/Continuar ');
writeln('2./ Respaldar ');
writeln('3./ Recuperar ');
writeln('4./ Listar ');
writeln('5./ Salir ');
readln(opcion);
case opcion of
'0': crearju;
'1': jug;
'2': res;
'3': rec;
'4': lis;
'5': exit;
end;
until opcion = '5';
readkey;
end.
program Untitled;
uses crt;
TYPE tipo_punt = ^tipo_nodo;
tipo_nodo = record
dato: string;
si, no: tipo_punt;
end;
var opcion,continuar, respuesta :char;
si, no, raiz, punt, anterior : tipo_punt;
ANIMAL, PREGUNTA : STRING;
Var fan : file of tipo_punt;
{ temporal : file of tipo_punt; }
Procedure crearju;
Begin
Assign(fan,'animales.dat');
{$I-}
Reset(fan);
{$I+}
If(IoResult<>0) Then
Rewrite(fan);
NEW(RAIZ);
RAIZ^.DATO := 'VIVE EN EL AGUA';
NEW(SI);
SI^.DATO := 'TIBURON';
SI^.SI := NIL; SI^.NO := NIL; RAIZ^.SI := SI;
NEW(NO);
NO^.DATO := 'RATON' ; NO^.SI := NIL; NO^.NO := NIL; RAIZ^.NO := NO;
write(fan,RAIZ);
close(fan);
WRITELN('Preparandose para inciar juego, precione tecla para continuar');
readkey;
exit;
end;
Procedure jug;
Begin
clrscr;
WHILE CONTINUAR = 'S' DO
BEGIN
clrscr;
Assign(fan,'animales.dat');
{$I-}
Reset(fan);
{$I+}
Read(fan,RAIZ);
WRITELN('PIENSE EN UN ANIMAL');
PUNT := RAIZ;
WHILE PUNT <> NIL DO
BEGIN
WRITE('¨',PUNT^.DATO,'? (S/N): ');
READLN(RESPUESTA);
ANTERIOR := PUNT;
IF UPCASE(RESPUESTA) = 'S' THEN PUNT := PUNT^.SI;
IF UPCASE(RESPUESTA) = 'N' THEN PUNT := PUNT^.NO;
END;
IF UPCASE(RESPUESTA) = 'S'
THEN BEGIN
WRITE('HE GANADO');
readkey;
Close(fan);
exit;
END
ELSE BEGIN
NEW(SI); SI^.SI := NIL; SI^.NO := NIL;
NEW(NO); NO^.SI := NIL; NO^.NO := NIL;
WRITELN('HE PERDIDO, INGRESE EL ANIMAL QUE ESTABA PENSANDO');
READLN(ANIMAL);
WRITE('INGRESE UNA PREGUNTA QUE DIFERENCIE A ', ANIMAL);
WRITELN(' DE ', ANTERIOR^.DATO);
READLN(PREGUNTA);
WRITE('CUAL ES LA RESPUESTA DE ', PREGUNTA, ' PARA ', ANIMAL, '(S/N): ');
READLN(RESPUESTA);
IF UPCASE(RESPUESTA) = 'S'
THEN BEGIN
SI^.DATO := ANIMAL;
NO^.DATO := ANTERIOR^.DATO;
ANTERIOR^.DATO := PREGUNTA;
ANTERIOR^.SI := SI;
ANTERIOR^.NO := NO;
END;
IF UPCASE(RESPUESTA) = 'N'
THEN BEGIN
SI^.DATO := ANTERIOR^.DATO;
NO^.DATO := ANIMAL;
ANTERIOR^.DATO := PREGUNTA;
ANTERIOR^.SI := SI;
ANTERIOR^.NO := NO;
END;
WRITELN('GRACIAS AHORA CONOZCO OTRO ANIMAL');
END;
write(fan,RAIZ);
close(fan);
WRITE('¨DESEA CONTINUAR (S/N): ');
READLN(CONTINUAR);
end;
exit;
end;
Procedure res;
begin
writeln(' Datos Respaldados (Proximamente)');
readkey;
end;
Procedure rec;
begin
writeln(' Datos Cargados (Proximamente)');
readkey;
end;
Procedure lisan;
begin
clrscr;
writeln(' Listado de Animales que conosco (Proximamente)');
readkey;
end;
Procedure lispreg;
begin
clrscr;
writeln(' Listado de preguntas que conosco (Proximamente)');
readkey;
end;
Procedure lis;
begin
repeat
clrscr;
writeln(' Escoja que lista desea ver');
writeln('1./ Animales ');
writeln('2./ Preguntas ');
writeln('3./ Salir al menu anterior');
readln(opcion);
case opcion of
'1': lisan;
'2': lispreg;
'3': exit;
end;
until opcion = '3';
readkey;
end;
begin
repeat
clrscr;
CONTINUAR := 'S';
writeln(' Menu Principal de Juego');
writeln('0./ Inicialisar juego nuevo');
writeln('1./ Jugar/Continuar ');
writeln('2./ Respaldar ');
writeln('3./ Recuperar ');
writeln('4./ Listar ');
writeln('5./ Salir ');
readln(opcion);
case opcion of
'0': crearju;
'1': jug;
'2': res;
'3': rec;
'4': lis;
'5': exit;
end;
until opcion = '5';
readkey;
end.
Valora esta pregunta


0