19-08-2011, 11:00
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:
les dejo lo que hice(saltense a la parte del proceso "procesar" y el programa principal).
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
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
La parte de maximos esta mal, pero como ya dije estoy quemado y ademas ya salgo para la facu.
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.
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