Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda TP Algoritmos
Autor Mensaje
damj Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Otra

Mensajes: 97
Agradecimientos dados: 2
Agradecimientos: 6 en 1 posts
Registro en: Jan 2011
Facebook LinkedIn Twitter YouTube
Mensaje: #1
Ayuda TP Algoritmos Trabajo practico Algoritmos y Estructuras de Datos
Buenas mañanas(?
Estoy teniendo problemas con un TP de algoritmos, al punto que estoy llegando al borde de la locura(?, no tanto pero se me hizo un matete de conceptos en la cabeza y estoy bloqueado.
Les dejo las consignas:
Spoiler: Mostrar
[Imagen: Tweets0001.jpg]
[Imagen: Tweets0002.jpg]
[Imagen: Tweets0003.jpg]
les dejo lo que hice(saltense a la parte del proceso "procesar" y el programa principal).


type
TipoPalabra = string[30];
T_Fech = record
dia : integer;
mes : integer;
anio : integer;
end;
T_Reg = record
usu : string[30];
msg : string [140];
fecha: integer;
end;
T_Arch = file of T_Reg;
var
arch:T_Arch;
palabra:TipoPalabra;
myPalabra:TipoPalabra;
maxPal:integer;
maxFech:integer;

//Funcion Cantidad de palabras
function CantidadDePalabras(texto:string):byte;
var
posicion,total:byte;
begin
total := 0;
posicion := pos(' ', texto);
while (posicion > 0) do begin
delete(texto, 1, posicion);
if (posicion > 1) then begin
inc(total);
end;
posicion := pos(' ', texto);
end;
if (length(texto)>0) then begin
inc(total);
end;
CantidadDePalabras := total;
end;
// Procedimiento Obtener palabra
procedure ObtenerPalabra(texto:string; indice:byte; var palabra:TipoPalabra);
var posicion,i:byte;
begin
i:=1;
posicion:=pos(' ', texto);
while (posicion = 1) OR (i < indice) do begin
delete(texto,1,posicion);
if (posicion <> 1) then begin
inc(i);
end;

posicion := pos(' ',texto);
end;
if (posicion > 0) then begin
delete(texto,posicion,(length(texto) - posicion + 1));
end;
palabra:=texto;
end;
// Funcion texto contiene palabra
function TextoContienePalabra(texto:string; palabra:TipoPalabra):boolean;
var posicion:byte;
begin
posicion:=pos(palabra,texto);
if (posicion=0) then begin
TextoContienePalabra:=FALSE
end
else begin
TextoContienePalabra:=TRUE
end;
end;
// Ingresar Palabra
procedure IngresarPalabra(var myPalabra:TipoPalabra);
begin
writeln('Ingresar Palabra');
readln(myPalabra);
end;
// Abrir archivo
procedure abrir_archivo(var arch:T_Arch; ruta:string);
begin
assign(arch,ruta);
reset(arch);
end;
//Procesar
procedure procesar(var palabra:TipoPalabra; var arch:T_Arch; var maxPal:integer; var maxFech:integer);
var
i:integer;
Regi:T_Reg;
antCantPal:integer;
cantPal:integer;
begin
antCantPal:=0;
cantPal:=0;
while not eof(arch) do
begin
read(arch,Regi);
antCantPal:=
for i:=0 to CantidadDePalabras(regi.msg) do
begin
ObtenerPalabra(Regi.msg, i, palabra);
IngresarPalabra(myPalabra);
if (palabra = myPalabra) then
inc(cantPal);
end;
if cantPal>antCantPal then begin
maxPal:=cantPal;
maxFech:=Regi.fecha;
end;
end;
end;
//Cerrar archivo
procedure cerrar_archivo(var arch:T_Arch);
begin
close(arch)
end;
//Resultado
procedure resultado(maxFech:integer;maxPal:integer);
begin
write('El dia en el que la palabra ',myPalabra);
writeln('se repitio mas veces fue ', maxFech);
writeln('y la cantidad de veces fue ', maxPal);
end;
//procedure ini_proces(var tamPal,cantPal,posPal,maxPal:integer;fechaMaxPal:logint;palabra:TipoPalabra;texto:string);
//begin
// tamPal:=lenght(palabra);
// cantPal:=0;
// posPal:=pos(palabra,texto);
// maxPal:=-1;
// fechaMaxPal:=0;
//end;

//Programa principal
begin
maxPal:=0;
maxFech:=0;
IngresarPalabra(myPalabra);
abrir_archivo(arch,'D:\TWEETS.DAT');
procesar(palabra,arch,maxPal,maxFech);
cerrar_archivo(arch);
resultado(maxPal,maxFech);
end.



La parte de maximos esta mal, pero como ya dije estoy quemado y ademas ya salgo para la facu.
Esta bien el sintaxis en general?
Esta bien la "idea principal" del procedimiento "procesar"?
no uso nunca el procedimiento TextoContienePalabra(), donde lo puedo enganchar?

Saludos

[Imagen: sigae.jpg]
19-08-2011 11:00
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #2
RE: Ayuda TP Algoritmos
No revisé si desarrollaste bien las funciones, miré el código por encima para ver la estructura.
A mi parecer procesar está mal. Estás recorriendo el archivo y mientras tanto pidiendo a cada rato que el usuario ingrese una palabra a buscar, cuando lo que deberías hacer es que el usuario ingrese la palabra al comienzo(fuera del ciclo) y después recorrer todo el archivo para ver cuándo fue que hubo más tweets con dicha palabra.

Respecto a la búsqueda de máximos, tu problema es que no estás haciendo un corte de control por fecha (ya te dan el archivo ordenado para que lo hagas). Tengo unas dudas del enunciado, cuando dice "retorne mes y año", no sé si desea que lleves una cuenta por mes y otra por año (ej: abril y 2009) o que sólo busques el mes de un año (ej: abril del 2010), el primero se puede hacer combinando corte de control por año con un vector de 12 words en que le vayas sumando la cantidad de palabras por mes, entonces para el año usás lo que obtuviste del corte de control y para el mes sólo sacás el máximo del vector. Por si acaso consultalo con el ayudante o profesor.

La idea de TextoContienePalabra() es que metas ahí todo lo que se refiere a buscar la palabra, de modo que cuando hagas el corte de control directamente pongas un
if TextoContienePalabra(texto, palabra) do incrementarContadorCorrespondiente;

Es decir, sólo dentro de esa función usarías las funciones CantidadDePalabras y ObtenerPalabra y harías las comparaciones para ver si alguna es la palabra que ingresó el usuario.
19-08-2011 15:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
damj Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Otra

Mensajes: 97
Agradecimientos dados: 2
Agradecimientos: 6 en 1 posts
Registro en: Jan 2011
Facebook LinkedIn Twitter YouTube
Mensaje: #3
RE: Ayuda TP Algoritmos
muchas gracias por responder anirus, tome en cuenta algunas cosas que me dijiste y estuve modificando. Aca te dejo como mas o menos lo arme, igual sigue sin funcionar.



program TPAlgoritmos;
uses crt;
type
T_Fech = record
anio : integer;
mes : integer;
dia : integer;


end;
T_Reg = record
usu : string[30];
fecha: T_Fech;
msg : string [140];

end;
TipoPalabra = string[30];
T_Arch = file of T_Reg;
var
arch:T_Arch;
palabra:TipoPalabra;
myPalabra:TipoPalabra;
maxPal:integer;
maxFechMes,maxFechAnio:integer;

//Funcion Cantidad de palabras
function CantidadDePalabras(texto:string):byte;
var
posicion,total:byte;
begin
total := 0;
posicion := pos(' ', texto);
while (posicion > 0) do begin
delete(texto, 1, posicion);
if (posicion > 1) then begin
inc(total);
end;
posicion := pos(' ', texto);
end;
if (length(texto)>0) then begin
inc(total);
end;
CantidadDePalabras := total;
end;
// Procedimiento Obtener palabra
procedure ObtenerPalabra(texto:string; indice:byte; var palabra:TipoPalabra);
var posicion,i:byte;
begin
i:=1;
posicion:=pos(' ', texto);
while (posicion = 1) OR (i < indice) do begin
delete(texto,1,posicion);
if (posicion <> 1) then begin
inc(i);
end;

posicion := pos(' ',texto);
end;
if (posicion > 0) then begin
delete(texto,posicion,(length(texto) - posicion + 1));
end;
palabra:=texto;
end;
// Funcion texto contiene palabra
function TextoContienePalabra(texto:string; palabra:TipoPalabra):boolean;
var posicion:byte;
begin
posicion:=pos(palabra,texto);
if (posicion=0) then begin
TextoContienePalabra:=FALSE
end
else begin
TextoContienePalabra:=TRUE
end;
end;
// Ingresar Palabra
procedure IngresarPalabra(var myPalabra:TipoPalabra);
begin
writeln('Ingresar Palabra');
readln(myPalabra);
end;
// Abrir archivo
procedure AbrirArchivo(var arch:T_Arch);
begin
assign(arch,'c:\tweets.dat');
reset(arch);
end;
//Procesar
procedure Procesar(var palabra:TipoPalabra; var arch:T_Arch; var maxPal:integer; var maxFechMes,maxFechAnio:integer);
var
i:integer;
Regi:T_Reg;
//antCantPal:integer;
cantPal:integer;
antFech:T_Fech;
begin
while not eof(arch) do
begin
read(arch,Regi);
//antCantPal:=0;
cantPal:=0;
maxPal:=0;
//maxFech:=0;
antFech.mes:=0;
antFech.anio:=0;
antFech.mes :=Regi.fecha.mes;
antFech.anio :=Regi.fecha.anio;
if TextoContienePalabra(Regi.msg,myPalabra) = TRUE then begin
while (antFech.mes = Regi.fecha.mes) AND (antFech.anio = Regi.fecha.anio) do
begin
for i:=0 to CantidadDePalabras(Regi.msg) do
begin
ObtenerPalabra(Regi.msg, i, palabra);
if (palabra = myPalabra) then
inc(cantPal);
end;
read(arch,Regi);
end;
if cantPal>maxPal then begin
maxPal:=cantPal;
maxFechMes:=antFech.mes;
maxFechAnio:=antFech.anio;
end;
end;
end;


end;
//Cerrar archivo
procedure CerrarArchivo(var arch:T_Arch);
begin
close(arch)
end;
//Resultado
procedure resultado(maxFechMes:integer;maxFechAnio:integer;maxPal:integer);
begin
write('El dia en el que la palabra ',myPalabra);
writeln('se repitio mas veces fue ', maxFechAnio,maxFechMes);
writeln('y la cantidad de veces fue ', maxPal);
end;
//procedure ini_proces(var tamPal,cantPal,posPal,maxPal:integer;fechaMaxPal:logint;palabra:TipoPalabra;texto:string);
//begin
// tamPal:=lenght(palabra);
// cantPal:=0;
// posPal:=pos(palabra,texto);
// maxPal:=-1;
// fechaMaxPal:=0;
//end;

//Programa principal
begin
maxPal:=0;
maxFechAnio:=0;
maxFechMes:=0;
IngresarPalabra(myPalabra);
AbrirArchivo(arch);
Procesar(palabra,arch,maxPal,maxFechMes,maxFechAnio);
CerrarArchivo(arch);

resultado(maxPal,maxFechMes,maxFechAnio);
end.



me di cuenta que el gran problema que tengo es con los archivos, no entiendo bien como tiene que estar estructurado el archivo que lee.
Saludos

[Imagen: sigae.jpg]
20-08-2011 02:58
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #4
RE: Ayuda TP Algoritmos
Como te dice que el formato de la fecha es AAAAMMDD sería:


T_Reg = record
usuario = string[30];
fecha = longint;
mensage = string[140];
end;




Es decir, no tenés un campo para el día, uno para mes y uno para año, sino que eso lo tenés que separar después usando divisiones.
(Este mensaje fue modificado por última vez en: 20-08-2011 16:33 por Anirus.)
20-08-2011 16:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
damj Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Otra

Mensajes: 97
Agradecimientos dados: 2
Agradecimientos: 6 en 1 posts
Registro en: Jan 2011
Facebook LinkedIn Twitter YouTube
Mensaje: #5
RE: Ayuda TP Algoritmos
bueno,Anirus, disculpa por colgar, tenes razon por lo de la fecha, lo que pasa que segui los ejemplos del blog holamundopascal y hay uno que usa la fecha como un registro y supuse que se hacia asi(?
y como la separo?, con alguna funcion de cadena?

Saludos

[Imagen: sigae.jpg]
26-08-2011 10:44
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AkhAnubis Sin conexión
Militante

***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 77
Agradecimientos dados: 1
Agradecimientos: 83 en 19 posts
Registro en: Jul 2011
Mensaje: #6
RE: Ayuda TP Algoritmos
(26-08-2011 10:44)damj escribió:  bueno,Anirus, disculpa por colgar, tenes razon por lo de la fecha, lo que pasa que segui los ejemplos del blog holamundopascal y hay uno que usa la fecha como un registro y supuse que se hacia asi(?
y como la separo?, con alguna funcion de cadena?

Saludos

Tendrías que usar X DIV Y (divide a X por Y y trunca el resultado) y MOD (devuelte el resto de dividir X por Y). fecha DIV 10000 para el año y fecha MOD 100 para el día. Para el mes podés hacer DIV 100 y después MOD 100, MOD 10000 y después DIV 100, o restarle a fecha los campos que ya sacaste multiplicados por potencias de 10.

El sentido de que la fecha la pongas como AAAAMMDD en lugar de definir un registro es que, en el primer caso, el orden alfabético/numérico coincide con el orden cronológico, mientras que los registros tendrías que ordenarlos por varios niveles.

(Este mensaje fue modificado por última vez en: 26-08-2011 13:17 por AkhAnubis.)
26-08-2011 13:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #7
RE: Ayuda TP Algoritmos
Esta es una modificación de la que estaba en holamundo pascal que era para ddmmaaaa(cap 2, problema 2.2)


var
fec: longint;
dia,mes,anio: integer;

begin
write('Ingrese una fecha (aaaammdd): ');
readln(fec);

anio:= fec div 10000;
mes := (fec - anio*10000) div 100;
dia := fec mod 100;

writeln('dia=',dia,' mes=',mes,' anio=',anio);
end.



26-08-2011 13:19
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
damj Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Otra

Mensajes: 97
Agradecimientos dados: 2
Agradecimientos: 6 en 1 posts
Registro en: Jan 2011
Facebook LinkedIn Twitter YouTube
Mensaje: #8
RE: Ayuda TP Algoritmos
muchas gracias anubis y anirus. Creo que habíamos hecho unos ejercicios con fechas, esto de la materia anual se me esta olvidando todo jaja.
La cuestión es que hice las modificaciones, pero funca mal, me parece que es por la estructura del archivo.
cuando ejecuto esto



program TPAlgoritmos;
uses crt;
type
//T_Fech = record
//anio : integer;
//mes : integer;
//dia : integer;
//end;
T_Reg = record
usu : string[30];
fecha: longint;
msg : string [140];

end;
TipoPalabra = string[30];
T_Arch = file of T_Reg;
var
arch:T_Arch;
palabra:TipoPalabra;
myPalabra:TipoPalabra;
maxPal:integer;
maxFechMes,maxFechAnio:integer;

function CantidadDePalabras(texto:string):byte;
var
posicion,total:byte;
begin
total := 0;
posicion := pos(' ', texto);
while (posicion > 0) do begin
delete(texto, 1, posicion);
if (posicion > 1) then begin
inc(total);
end;
posicion := pos(' ', texto);
end;
if (length(texto)>0) then begin
inc(total);
end;
CantidadDePalabras := total;
end;
procedure ObtenerPalabra(texto:string; indice:byte; var palabra:TipoPalabra);
var posicion,i:byte;
begin
i:=1;
posicion:=pos(' ', texto);
while (posicion = 1) OR (i < indice) do begin
delete(texto,1,posicion);
if (posicion <> 1) then begin
inc(i);
end;

posicion := pos(' ',texto);
end;
if (posicion > 0) then begin
delete(texto,posicion,(length(texto) - posicion + 1));
end;
palabra:=texto;
end;
function TextoContienePalabra(texto:string; palabra:TipoPalabra):boolean;
var posicion:byte;
begin
posicion:=pos(palabra,texto);
if (posicion=0) then begin
TextoContienePalabra:=FALSE
end
else begin
TextoContienePalabra:=TRUE
end;
end;
procedure IngresarPalabra(var myPalabra:TipoPalabra);
begin
writeln('Ingresar Palabra');
readln(myPalabra);
end;
procedure AbrirArchivo(var arc:T_Arch);
begin
assign(arc,'c:\tweets.dat');
reset(arc);
end;
procedure Procesar(var palabra:TipoPalabra; var arch:T_Arch; var maxPal:integer; var maxFechMes:integer; var maxFechAnio:integer);
var
Regi:T_Reg;
i,cantPal,anio,mes,antMes,antAnio:integer;
fec:longint;
begin
maxPal:=0;
while ( NOT eof(arch) ) do
begin
read(arch,Regi);
cantPal:=0;
fec := Regi.fecha;
anio:= fec div 10000;
mes := (fec - anio*10000) div 100;
//dia := fec mod 100;
antMes := mes;
antAnio := anio;
writeln('mensaje: ',Regi.msg); // esto es para debug
if TextoContienePalabra(Regi.msg,myPalabra) = TRUE then begin
while (antMes = mes) AND (antAnio = anio) do
begin
for i:=0 to CantidadDePalabras(Regi.msg) do
begin
ObtenerPalabra(Regi.msg, i, palabra);
if (palabra = myPalabra) then
inc(cantPal);
end;
read(arch,Regi);
end;
if cantPal>maxPal then begin
maxPal:=cantPal;
maxFechMes:=antMes;
maxFechAnio:=antAnio;
end;
end;
end;


end;
procedure CerrarArchivo(var arch:T_Arch);
begin
close(arch)
end;
procedure Resultado(maxFechMes:integer;maxFechAnio:integer;maxPal:integer);
begin
write('El dia en el que la palabra ',myPalabra);
writeln(' se repitio mas veces fue el ', maxFechAnio, '/', maxFechMes);
writeln('y la cantidad de veces fue ', maxPal);
end;
begin
maxPal:=0;
maxFechAnio:=0;
maxFechMes:=0;
IngresarPalabra(myPalabra);
AbrirArchivo(arch);
Procesar(palabra,arch,maxPal,maxFechMes,maxFechAnio);
CerrarArchivo(arch);
if maxPal=0 then
begin
writeln('La palabra ',myPalabra, ' nunca fue escrita')
end
else
begin
Resultado(maxPal,maxFechMes,maxFechAnio);
end;
end.



con este archivo:


pepe 20110223 que lindo dia asdas
juan 20110223 que dia lindo dia
jose 20110223 que dia hermoso
roberto 20110223 dia dia dia
carlo 20110223 que lindo dia asdas
santiago 20110223 que dia lindo dia
nicolas 20110223 que dia hermoso



me devuelve


Ingresar Palabra
dia
mensaje: juan 2011
La palabra dia nunca fue escrita



es decir el registro mensaje me toma cualquier otra cosa. la verdad no tengo idea de como estructurar archivos planos, y no encontre nada en la intranet.
nuevamente gracias por toda la ayuda y la paciencia =D

[Imagen: sigae.jpg]
27-08-2011 01:30
Envíale un email Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #9
RE: Ayuda TP Algoritmos
Y si te hacés un programa para grabar los registros en el archivo?
27-08-2011 16:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 194 en 74 posts
Registro en: Apr 2008
Mensaje: #10
RE: Ayuda TP Algoritmos
(27-08-2011 01:30)damj escribió:  es decir el registro mensaje me toma cualquier otra cosa. la verdad no tengo idea de como estructurar archivos planos

Acá:



T_Reg = record
usu : string[30];
fecha: longint;
msg : string [140];




Eliminá el tamaño de los string. Que "usu" y "msg" sean string a secas (no "string[30]" y "string[140]", solo "string").
(Este mensaje fue modificado por última vez en: 27-08-2011 20:56 por Dem0.)
27-08-2011 20:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #11
RE: Ayuda TP Algoritmos
Pero es una restricción del enunciado eso, si pone sólo string es lo mismo que ponga string[255], el problema a mi parecer es que está escribiendo todo a mano.
(Este mensaje fue modificado por última vez en: 27-08-2011 21:15 por Anirus.)
27-08-2011 21:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 194 en 74 posts
Registro en: Apr 2008
Mensaje: #12
RE: Ayuda TP Algoritmos
¿Cómo "escribiendo a mano"? ¿No lo está mostrando por pantalla?
27-08-2011 23:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 194 en 74 posts
Registro en: Apr 2008
Mensaje: #13
RE: Ayuda TP Algoritmos
Me corrijo, según esto: http://pascal-programming.info/lesson11.php#5 , no necesitás ni siquiera declararlas como string:

Mirá este ejemplo:


Type
Str25 = String[25];
TBookRec = Record
Title, Author,
ISBN : Str25;
Price : Real;
End;

Procedure EnterNewBook(var newBook : TBookRec);
Begin
Writeln('Please enter the book details: ');
Write('Book Name: ');
Readln(newBook.Title);
Write('Author: ');
Readln(newBook.Author);
Write('ISBN: ');
Readln(newBook.ISBN);
Write('Price: ');
Readln(newBook.Price);
End;

Var
bookRecArray : Array[1..10] of TBookRec;
tempBookRec : TBookRec;
bookRecFile : File of TBookRec;
i : 1..10;

Begin
Assign(bookRecFile, 'bookrec.dat');
ReWrite(bookRecFile);
For i := 1 to 10 do
Begin
EnterNewBook(bookRecArray[i]);
{ bookRecArray[i] now contains the book details }
Write(bookRecFile, bookRecArray[i]);
End;
Close(bookRecFile);
Writeln('Thanks for entering the book details.');
Writeln('They are saved in a file!');
Write('Now choose a record to display from 1 to 10: ');
Readln(i);
ReSet(bookRecFile);
Seek(bookRecFile, i-1);
Read(bookRecFile, tempBookRec);
Close(bookRecFile);
Writeln('Here are the book details of record #',i,':');
Writeln;
Writeln('Title: ', tempBookRec.Title);
Writeln('Author: ', tempBookRec.Author);
Writeln('ISBN: ', tempBookRec.ISBN);
Writeln('Price: ', tempBookRec.Price);
Readln;
End.


28-08-2011 00:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Anirus Sin conexión
Super Moderador
Sin estado :)
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.163
Agradecimientos dados: 81
Agradecimientos: 232 en 78 posts
Registro en: Nov 2009
Mensaje: #14
RE: Ayuda TP Algoritmos
Es lo que digo, que lo grabe por programa en vez de escribir él el .dat (creo que lo escribió él, me suena que sino los nros no serían legibles)
28-08-2011 02:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 194 en 74 posts
Registro en: Apr 2008
Mensaje: #15
RE: Ayuda TP Algoritmos
Ahí te entendí =)
28-08-2011 02:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)