Pascal/Turbo Pascal - Ficheros

   
Vista:
Imágen de perfil de Judit

Ficheros

Publicado por Judit (12 intervenciones) el 18/09/2017 10:39:45
Buenos días a tod@s, tengo unas dudas en un par de ejercicios finales del curso que estoy realizando, el primero es bastante sencillo pero no sé cómo escribirlo, hay que crear un programa que abra un fichero de texto, cree una copia del mismo y añada al final de la copia una cadena de carácteres. No quiero que me hagáis el ejercicio, solo que me expliquéis cómo se codifica la parte de crear una copia y añadir una cadena de carácteres.
Esto es lo que he escrito:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program U9_2_2;
uses
  crt;
type
  tfichero=text;
var
  nombre,nombre2:string;
 
procedure escrive_archivo(nombre,nombre2:string);
var
  fichero,fichero2:tfichero;
  linea:string;
begin
  assign(fichero,nombre);
  reset(fichero);
  assign(fichero2,nombre2)
  rewrite(fichero2);
  while not eof(fichero) do begin
    readln(fichero,linea);
	writeln(fichero2);
  end;
  close(fichero);
end;
 
begin
  writeln('Introduzca nombre y extension del archivo:');
  readln(nombre);
  repeat
    writeln('Introduzca nombre y extension del nuevo archivo:');
    readln(nombre2);
  until (nombre2<>nombre);
  readkey;
  escrive_archivo(nombre,nombre2);
  readkey
end.

Un saludo a tod@s.
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

Ficheros

Publicado por David (193 intervenciones) el 18/09/2017 12:46:08
En primer lugar, cuando vas a escribir en el fichero de copia, te falta poner lo que vas a escribir. Me explico: tú pones esto

writeln(fichero2); deberías poner writeln(fichero2,linea);

Luego fuera del bucle for, para añadir la linea al final, bastaría con poner writeln(fichero2,lineafinal);

Además, te faltaría cerrar el fichero2.

Espero haberte aclarado tus dudas. SI tienes alguna otra, vuelve a escribir.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Judit

Ficheros

Publicado por Judit (12 intervenciones) el 19/09/2017 12:05:04
Gracias David, me has ayudado muy bien.
Ahora estoy con un ejercicio largo, la duda actual es cómo hacer un bucle while en un procedimiento que busca un hueco libre en una tabla (el hueco libre es cuando cesta1[m].en_cesta=false).

1
2
3
4
5
6
7
8
9
procedure busca_libre(cesta1:cesta; var libre:integer; tammaxcesta:integer);
var
  m: integer;
begin
  libre:= 0;
  for m:= 1 to tammaxcesta do
    while (cesta1[m].en_cesta=false) do
      libre:= m;
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
Revisar política de publicidad