Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: manu3742 en 1 Abril 2011, 14:32 pm



Título: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 1 Abril 2011, 14:32 pm
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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: d(-_-)b en 1 Abril 2011, 21:22 pm
Mira este post  ;D

http://foro.elhacker.net/programacion_general/ejercicio_pascal-t156681.0.html

saludos...


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 08:23 am
Muchísimas gracias amigo.

saludos


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 12:22 pm
lo he compilado pero no funciona


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: Khronos14 en 4 Abril 2011, 13:09 pm
Utiliza las etiquetas GeSHi para poner el código.

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9.  Text: TextFile;
  10.  Buffer, Archivo: string;
  11.  Lines: integer = 0;
  12.  Size: integer = 0;
  13. begin
  14.  {$I-}
  15.  Archivo:= 'C:\prueba.txt';
  16.  AssignFile(Text, Archivo);
  17.  
  18.  FileMode:= 0; //ReadOnly
  19.  Reset(Text);
  20.  
  21.  if IOResult = 0 then
  22.    begin
  23.      while not EOF(Text) do
  24.        begin
  25.          ReadLn(Text, Buffer);
  26.          Inc(Lines);
  27.          Size:= Size + Length(Buffer);
  28.        end;
  29.      CloseFile(Text);
  30.  
  31.      WriteLn('Numero de lineas: ', Lines);
  32.      WriteLn('Numero de caracteres: ', Size);
  33.    end else
  34.      WriteLn('Se produjo un error abriendo el archivo: ', Archivo);
  35.  {$I+}
  36.  
  37.  Readln;
  38. end.
  39.  

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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 13:30 pm
Perdona , pero sino me lo pones en Pascal me pierdo, es que estoy empezando..

saludos


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: Khronos14 en 4 Abril 2011, 13:34 pm
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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 13:37 pm
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


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: Khronos14 en 4 Abril 2011, 13:45 pm
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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: 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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: Khronos14 en 4 Abril 2011, 14:54 pm
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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: leogtz en 4 Abril 2011, 14:55 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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 21:01 pm
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.


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: manu3742 en 4 Abril 2011, 21:04 pm
Una línea me ha sobrado para acabar correctamente el programa.

gracias a todos los que habeis contestado, espero seguir contando con vosotros.

saludos


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: Edu en 4 Abril 2011, 22:32 pm
Pone los codigos dentro de las etiquetas


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: RyogiShiki en 4 Abril 2011, 22:43 pm
Pone los codigos dentro de las etiquetas
(http://i56.tinypic.com/34erlw6.png)


Título: Re: ejercicio Pascal, ayuda para terminarlo
Publicado por: d(-_-)b en 6 Abril 2011, 20:40 pm
Citar
La 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...