Pascal/Turbo Pascal - Matrces, registros...ayuda!!

 
Vista:

Matrces, registros...ayuda!!

Publicado por Alvaro (1 intervención) el 31/01/2010 19:19:57
Hola tengo un problemilla estoy empezando a programar por mi cuenta y me he atascado con un problemilla. El problema me pide q escriba 3 procedimientos:
1)almacena, de forma condensada, la matriz m en el fichero de registros f
2)devuelve en m la matriz que hay almacenada, de forma condensada, en el fichero de registros f
3)muestra en pantalla (con el formato habitual) la matriz almacenada, de forma condensada, en el
fichero de registros f
Si me podriais poner como se haria y un ejemplillo.
Uso un lenguaje Pascal.
Muchisimas gracias de antemano a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Matrces, registros...ayuda!!

Publicado por edwin (71 intervenciones) el 02/02/2010 16:44:54
ok, esperemos que se a lo que buscas o segun entendi
la siguiente es un programita , con un menu , que ejemplifica lo que requieres
saludos

program matrizArchivo;
uses crt;

type
Matriz = array[1..5,1..5] of integer;

Registro = Record
RegistroMatriz:Matriz;
End;
TipoArchivo = file of Registro;
var
Tiporegistro : registro;
TiArchivo:TipoArchivo;

{--------------*------------------*----------------*------------------------}
procedure EliminaciondeArchivo(var AArchivo:Tipoarchivo);
var
Error: Integer;
Tecla:Char;
Begin
Assign(AArchivo,'c:\matriz.dat');
{$I-}
Reset(AArchivo);
Error:=IOResult;
{$I+}
If Error = 0 Then
Begin
Close(AArchivo);
Erase(AArchivo);
End;

gotoxy(1,25);write('Archivo Eliminado ');

End;

{--------------*------------------*----------------*------------------------}

procedure AperturaDeArchivo(var AArchivo:Tipoarchivo);
var
Error: Integer;
Tecla:Char;
Begin
Assign(AArchivo,'c:\matriz.dat');
{$I-}
Reset(AArchivo);
Error:=IOResult;
{$I+}
If Error <> 0 Then
Begin
TextAttr:=14+4*16;
gotoxy(1,25);write('Creando Archivo!! ');
rewrite(AArchivo);
delay(30);
End;

End;

{--------------*------------------*----------------*------------------------}

procedure InicializaRegistro (Var TIRegistro:Registro);
Var
Columna, Renglon:integer;
Begin
For Columna:=1 to 5 do
For Renglon :=1 to 5 do
TIRegistro.RegistroMatriz[Renglon,columna]:= 0;

End;

{--------------*------------------*----------------*------------------------}

procedure LLenaMatrizCarton (Var TIRegistro:Registro );
Var
Valor,Columna, Renglon:integer;
Begin
InicializaRegistro (TIRegistro); {inicializamos la Matriz}
Randomize;{activamos el motor aleatorio}
For Columna:=1 to 5 do
For Renglon :=1 to 5 do
Begin
Valor:= Random(15);
TiRegistro.RegistroMatriz[Renglon,Columna]:= Valor;
End;
End;

{--------------*------------------*----------------*------------------------}

Procedure GuardaRegistroEnArchivo(var TiArchivo:TipoArchivo ; TiRegistro:Registro);
Var
Numero:integer;
Begin
Gotoxy(1,25);Write('Guardando Registro M generado en el Archivo F');
AperturaDeArchivo(TiArchivo);
LLenaMatrizCarton(TiRegistro);
Delay(30);
Seek (TIArchivo,filesize(TIArchivo));{posicionamos el puntero al final del archivo}
Delay(30);
Write(TiArchivo,TiRegistro);{guardamos el registro al final del archivo}
Delay(39);
Close(TiArchivo);
End;
{--------------*------------------*----------------*------------------------}

Procedure ImprimeMatrizPantalla (Var TiArchivo:tipoArchivo; TIRegistro:registro);
Var
salto,Columna, Renglon:integer;
Begin
AperturaDeArchivo(TiArchivo);
Seek(TiArchivo,0); {Posicionamos al inicio el puntero del archivo}
Read(TiArchivo,TIRegistro); {Leemos el Registro segun posicion del puntero}
Close(TiArchivo);
textattr:=2+0*16;
Gotoxy(33,4);Write('M A T R I Z');
textattr:=7+0*16;
Salto:=3;
For Renglon:=1 to 5 do
Begin
For Columna :=1 to 5 do
Begin
gotoxy(27+Columna+salto,6+Renglon); write(' ',TiRegistro.RegistroMatriz[Renglon,Columna],' ');
inc(salto,3);
End;
salto:=3;
End;
Gotoxy(10,15);write('Pulse cualquier tecla, para continuar....');
readkey;
End;

{--------------*------------------*----------------*------------------------}

Procedure Menu(Var TIArchivo:TipoArchivo; TiRegistro:Registro);
Var
Tecla:char;
Begin
textattr:=7+0*16;
clrscr;
Repeat
textattr:=7+0*16;
Clrscr;
Gotoxy(25,10);Write('Carga matriz en M y grabar en F ...[1]');
Gotoxy(25,11);Write('Presenta la Matriz desde M ..[2]');
Gotoxy(25,12);Write('Salir....................[4]');
Tecla:=Readkey;
Case Tecla of
'1':Begin
textattr:=7+0*16;
clrscr;
EliminaciondeArchivo(TiArchivo);
GuardaRegistroEnArchivo(TiArchivo,TiRegistro);
End;
'2':Begin
textattr:=7+0*16;
ImprimeMatrizPantalla (TiArchivo,TIRegistro);
clrscr;
End;
End;{case}
Until Tecla = '3';
End;
{--------------*------------------*----------------*------------------------}
{cuerpo del programa}
Begin
Menu(TIArchivo, TipoRegistro);
End.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

POSCICION EN UN REGLON DE UN ARCH TEXT

Publicado por CUBA (1 intervención) el 31/05/2010 03:41:42
COMO PUEDO POCICIONARME EN UN DETERMINADO REGLON PARA COPIARLO:
YO ENTIENDO QUE SE USA UN SEEK PARA POSISIONARME EN UN DETERMINADA POSISION DE UN ARCHIVO BINARIO .. COMO HAGO EN UN ARCHIVO TXT..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar