odczyt i zapis do pliku

0

Witam mam pewien problem. Usiłuje zrobić zadanie:
Napisz program, który będzie jednocześnie odczytywał po dwa wiersze
z pliku tekstowego i zapisywał je do dwóch osobnych plików2 (pierwszy
wiersz do pierwszego pliku, drugi do drugiego).

Jak na razie zrobiłem:

program pliki;
uses
 crt;

type
 plik = file;

var

T:text;

procedure zapisz(var F:text);
 var
  a:string[80];
  i:byte;
 begin
  rewrite(F);
  writeln('Podaj znaki do zapisania');
    for i:=1 to 6 do
     begin
      readln(a);
      writeln(f,a);
      writeln;
     end;
  close(f);
 end;

{
procedure odczyt(var F:text);
 var
  a,b,c:string[80];
 begin
  reset(F);
   repeat;
    readln(f,a);
    append(f,b);

    readln(f,a);
    append(f,c);
    writeln;

   until eof(f);

  close(f)
 end;
}


BEGIN

clrscr;
assign(T,'dane.txt');
assign(T2,'plik1.txt');
assign(T3,'plik2.txt');
zapisz(T);
odczyt(T);
readln;
end.

nie mam pomysłu jaką procedurę napisać aby odczytywało parzyste wiersze i nieparzyste, które będą dopisywane do dwóch odrębnych plików...

0

Kod niesformatowany za ładnie i nie wstawiony w znaczniki, takzę czytać się nie chce, a i robienie gotowców za kogoś też u
mnie się skończyło. Także podpowiem ustaw zmienną Licznik na 1, później zrób pętle: while not EOF(Plik) do... i w
niej wczytuj wiersz tekstu z plku, sprawdzajć tak jak poniżej czy jest on parzysty czy nie, jeżeli tak to zapisuj do dugiego z
plików, a jeżeli nie to do pierwszego. Natomiast po zapisaniu zwiększ licznik o jeden. Chyba taki sposób - jest najprostszy.
czym sprawdzaj czy

  if (Licznik mod 2 = 0) then
    // Parzysty
    else
    // Nieparzysty
0
program pliki;

uses
 crt;

type
 plik = file of text;

var

T,w1,w2:text;
x:integer;

procedure zapisz(var F:text);
 var
  a:string[80];
  i:byte;
 begin
  rewrite(F);
  writeln('Podaj znaki do zapisania');
    for i:=1 to 10 do
     begin
      readln(a);
      writeln(f,a);
      writeln;
     end;
  close(f);
 end;


procedure odczyt(var F,w1,w2:text);
 var
  a,b,c:string[80];
  x:integer;
 begin
  x:=0;
  reset(F);
  append(w1);
  append(w2);
   repeat;
    inc(x);
    readln(f,a);

    if (x mod 2) <> 0 then writeln(w1,a);
    if (x mod 2) = 0 then writeln(w2,a);

   until eof(f);

  close(f)
 end;



BEGIN

clrscr;
assign(T,'dane.txt');
assign(w1,'plik1.txt');
assign(w2,'plik2.txt');
zapisz(T);
odczyt(T,w1,w2);
readln;
end. 

za licznik odpowiada zmienna x. Program jest poprawnie napisany?

0

Dalej kod nie wstawiony w odpowiednie tagi i niesformatowany jak należy. Jak nie umiesz formatować samodzielnie to skorzystaj z:
http://www.mediafire.com/file/80zkrt8absx60cv/delfor_changed_by_olesio.rar ale Twoj kod wydaje się być ok, jeżeli oczywiście to co żałożyłeś
że ma robić - robi, to znaczy, że jest ok. Tylko wedlug mnie, zamiast dwoch warunków z mod - można użyć po pierwszym else i tyle.

0
var linia:string;
    parzyste:boolean;
...
  parzyste:=false;
  while not eof(plik_wej) do
  begin
    readln(plik_wej,linia);
    if parzyste
      then writeln(plik_wyj1,linia)
      else writeln(plik_wyj2,linia);
    parzyste:=not parzyste;
  end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1