NO veo por qué no sumas las líneas de este programa, me podeís ayudar.
Program contar;
var
c: char;
fichero: text;
url_archivo: string;
lineas: integer;
caracteres: integer;
begin
url_archivo:='C:\contar.txt';
assign(fichero, url_archivo);
reset(fichero);
caracteres:=0;
lineas:=0;
begin
while not eof(fichero) do begin
readln(fichero,c);
caracteres:=caracteres+1;
if not eof(fichero) then
lineas:=lineas+1;
readln(fichero);
end;
end;
writeln('El nombre del fichero es ', url_archivo);
writeln('El numero de lineas es ',lineas);
Writeln('El numero de letras es ',caracteres);
END.
Mira este post ;D
http://foro.elhacker.net/programacion_general/ejercicio_pascal-t156681.0.html
saludos...
Muchísimas gracias amigo.
saludos
lo he compilado pero no funciona
Utiliza las etiquetas GeSHi para poner el código.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
Text: TextFile;
Buffer, Archivo: string;
Lines: integer = 0;
Size: integer = 0;
begin
{$I-}
Archivo:= 'C:\prueba.txt';
AssignFile(Text, Archivo);
FileMode:= 0; //ReadOnly
Reset(Text);
if IOResult = 0 then
begin
while not EOF(Text) do
begin
ReadLn(Text, Buffer);
Inc(Lines);
Size:= Size + Length(Buffer);
end;
CloseFile(Text);
WriteLn('Numero de lineas: ', Lines);
WriteLn('Numero de caracteres: ', Size);
end else
WriteLn('Se produjo un error abriendo el archivo: ', Archivo);
{$I+}
Readln;
end.
Está hecho en Delphi pero debería funcionar en FreePascal.
Las directivas {$I-} y {$I+} son para controlar los errores de tipo Input/Output. Si la función IOResult() devuelve 0 es que el archivo se abrió con éxito. FileMode es una variable de Delphi que establece el modo de apertura de un archivo, por defecto, se abren los archivos en modo lectura y escritura, el 0 es modo lectura.
Saludos.
Perdona , pero sino me lo pones en Pascal me pierdo, es que estoy empezando..
saludos
Delphi es Object Pascal, si te fijas la sintaxis del código que te puse es idéntica a la de tu código. Prueba a compilarlo en FreePascal y pregunta las dudas que tengas ;)
Saludos.
La cuestión es que tengo que enviar el ejercicio con el código Pascal. en el momento se me identifique con Delhi que es el proximo xurso que voy a hacer me dice que no lo acepta
manu3742, te estoy diciendo que Delphi es Pascal jajaja
Delphi es un compilador que utiliza el lenguaje de programación Object Pascal, creas un archivo con la extensión .pas, le pones el código y lo compilas con FreePascal y listo.
no te enfades que me esta costando un mundo el curso de trabajo y lo hago a ratos . Es que no utilizo el FreePascal , utilizo el Notepad ++ como editor del curso por eso el código que me has mandado no lo compila.
No puedes utilizar Notepad++ para programar en Pascal, tienes que utilizar un compilador. Lazarus es un entorno de desarrollo para Object Pascal (Pascal) y usa como compilador FreePascal.
La otra opción es Delphi, pero es de pago.
Cita de: manu3742 en 4 Abril 2011, 14:03 PM
no te enfades que me esta costando un mundo el curso de trabajo y lo hago a ratos . Es que no utilizo el FreePascal , utilizo el Notepad ++ como editor del curso por eso el código que me has mandado no lo compila.
¡¡¡Porque Notepad++ no es un compilador!!!
Haz el esfuerzo, consigue un compilador de pascal y prueba el código, quieres todo a la mano.
Leo, no quiero todo a la mano, la cuestion es que si uno no ha visto utilizar un determinado codigo pues no lo ves en la vida aunque te estudies el tema 1000 veces.
Por que no sumaba los caracteres? yo ponía esta línea
num_caracteres:=num_caracteres+1;
pero correctamente expresada es:
NINGUNO DE LOS QUE ME HABEIS CONTESTADO A HABEIS ACERTADO. YO OS ESTOY MUY AGRADECIDO QUE CONSTE.
PERO ESTA LÍNEA NADIE, NI EN UNA DECADA DOY CON ELLA, GRACIAS A GRAN COMPAÑERO QUE ME LA HA DADO. GRACIAS
num_caracteres:=num_caracteres+ord(linea[0]);
EL CÓDIGO EXACTO DE TODO EL PROGRAMA ES:
Program contar;
(*CONSTANTES DEL PROGRAMA, EL TAMAÑO MÁXIMO DE LA LÍNEA Y DEL NOMBRE DEL FICHERO*)
const
TAMMAX=40;
var
linea: string ;
fichero: text;
url_archivo: string;
num_lineas: integer;
num_caracteres: integer;
begin
url_archivo:='C:\contar.txt';
assign(fichero, url_archivo);
reset(fichero);
(*SE INICIALIZAN LOS CONTADORES*)
num_caracteres:=0;
num_lineas:=0;
begin
(*SE LEE LINEA A LINEA EL FICHERO, PARA CADA UNA SE ACTUALIZA CONTADOR DE LÍNEAS SUMANDO 1 Y CONTADOR DE CARACTERES
SUMANDO EL TAMAÑO DE LA LÍNEA*)
while not eof(fichero) do
begin
readln(fichero, linea);
num_lineas:=num_lineas+1;
num_caracteres:=num_caracteres+ord(linea[0]);
end;
close (fichero);
end;
writeln('Nombre del fichero');
readln(url_archivo);
writeln('El numero de lineas es ',num_lineas);
Writeln('El numero de caracteres es ',num_caracteres);
END.
Una línea me ha sobrado para acabar correctamente el programa.
gracias a todos los que habeis contestado, espero seguir contando con vosotros.
saludos
Pone los codigos dentro de las etiquetas
Cita de: XXX-ZERO-XXX en 4 Abril 2011, 22:32 PM
Pone los codigos dentro de las etiquetas
(http://i56.tinypic.com/34erlw6.png)
CitarLa otra opción es Delphi, pero es de pago.
En todo caso se puede usar Turbo Delphi, de la version 2006, es gratuito aunque tiene sus limitaciones, es bastante completo para desarrollar lo que se ocurra sin usar componentes de tercesor, ademas para aprender y todo lo demas, viene bastante bien.
IcoFX se escribio en el.
Es un alternatiba para usar un Delphi gratuito bien completito :P
http://www.turbomirror.com/
saludos...