Pascal/Turbo Pascal - duda programa archivo texto

   
Vista:

duda programa archivo texto

Publicado por micky (2 intervenciones) el 22/12/2009 00:32:05
La verdad es que no me funciona, creo que da un bucle infinito, es en TP7:

Completar la función numeroCaracteres para que devuelva el número total de caracteres almacenados en el archivo de disco asociado (antes de la llamada a la función) al parámetro variable f de tipo text. En el caso de que el archivo esté vacío debe devolver el valor entero 0.

Y copio lo que viene:

function numeroCaracteres(var f:text):longint;
{ variables de uso opcional }
var n:longint; aux :char;
begin
{ Escribe a continuacion tu código }

(Y yo he puesto por ejemplo (una de las 1000 cosas que he probado que he probado))

n:=0;
reset(f);
while not eof(f) do
BEGIN
readln(f, aux);
n:=n+length(aux);
close(f);
END;

-------------------------
{ Fin de tu código }
end;
-------------------------

He probaso con y sin reset(f), con y sin eof(f), con y sin eoln(f), y alguna cosa más, pero no doy con ello. Es para la uni, asi que no debería ser extraordinariamente dificil, XD.

Gracias y un saludo.
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:duda programa archivo texto

Publicado por Diego Romero (997 intervenciones) el 22/12/2009 05:06:18
Debes contar los caracteres de un archivo?, declaralo como file of char.

function cuentaCaracteres(archivo: string): longint; { pasar el nombre del archivo }
var
f: file of char;
result: longint;
c: char;
begin
result:=0;
assign(f,archivo);
reset(f);
while not eof(f) do
begin
read(f,c);
inc(result);
end;
cuentaCaracteres:=result;
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

RE:duda programa archivo texto

Publicado por micky (2 intervenciones) el 22/12/2009 13:07:29
Lo huebiera hecho, pero todo lo que he escrito hasta el "{ Escribe aqui tu código}" es el enunciado, y no se puede cambiar, los de la uni no lo ponen tan facil, XD.
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

RE:duda programa archivo texto

Publicado por Antonio (74 intervenciones) el 22/12/2009 17:39:18
Hola Micky.

Por si aún no haz tirado la toalla te paso la function que puede solucionar tu problema:

Function CuentaCaracteres(VAR f : text) : longint;
VAR
n : longint; aux : char;

BEGIN
n := 0
assign(f,'C:\bp\bin\archivoexterno.txt');
reset(f)

while not eof(f) do
begin
read(f,aux);
if aux <> #32 then {descartamos el caracterer "espacio". Igualmente podemos descartar otros caracteres }
inc(n)
end;
Cuentacaracteres := n
end; { de la function}
Espero te solucione el problema y suerte.
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

RE:duda programa archivo texto

Publicado por micky (1 intervención) el 27/12/2009 15:28:49
Gracias por responder Antonio, no he podido probar tu opción porque ya me cerraron el plazo de correccion online, pero creo que podria estar bien.

Al final pregunte a un compi y me dio la solucion correcta, que es la que pego a continuacion:

function numeroCaracteres(var f:text):longint;

var n:longint; aux :char;
begin

n:=0;
reset(f);
if eof(f) then numerocaracteres:=0
else begin
while not eof(f) do begin
read(f,aux);
n:=n+1;
end;
numerocaracteres:=n;
end;

end;

Gracias y felices fiestas
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