Zas ten hnusny pascal...

Programovacie jazyky, rady, poradňa...
ranger.sk
Amateur
Amateur
Príspevky: 18
Registrovaný: 18 nov 2009, 11:06

Zas ten hnusny pascal...

Príspevok od používateľa ranger.sk »

Prosim, potreboval by som poradit, ako v pascale ocislovat riadky textoveho dokumentu (.txt)? A ako nastavit od-enterovanie od uzivatela po kazdom 50.tom riadku? Diky za help :)
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: Zas ten hnusny pascal...

Príspevok od používateľa Sagittarius »

No mohlo by to ísť takto

Kód: Vybrať všetko

readln(t);
i:=i+1;
pravdaže je to v nejakom cykle, keďže je to textový súbor, tak while

a potom

Kód: Vybrať všetko

if (i mod 50 = 0) then ...
A miesto tých troch pridáš ASCII kód entra, ten neviem aké má číslo... Myslím, že takto by to mohlo ísť. Ak som ťa dobre pochopil :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Zas ten hnusny pascal...

Príspevok od používateľa audiotrack »

enter je 13
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: Zas ten hnusny pascal...

Príspevok od používateľa Gregi »

Nespravne polozena otazka a este nespravnejsie odpoved. Jedine ta 13 je k veci. To chces cislovat vytvarany subor, alebo uz vytvoreny? A co myslis pod tym odentrovanim? Akoze pri kazdom 50. riadku sa da jeden ENTER naviac (prazdny riadok)? Z toho co si napisal nie je jednoznacne co vlastne chces. Tak sup sup a pis k veci. A co je to za odpoved While .... i:=i+1. Vsak to mozem povedat taku odpoved hadam na 99% programov (To je ako Nostradamusove proroctva, vzdy sa dopasuju tak, ze akosi sedia).
Sagittarius
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2883
Registrovaný: 13 feb 2007, 21:58
Bydlisko: Do nekonečna a ešte ďalej

Re: Zas ten hnusny pascal...

Príspevok od používateľa Sagittarius »

Ja som ten program myslel nejako takto:

Kód: Vybrať všetko

begin
clrscr;
i:=0;
assign(t,'suborent.txt');
reset(t);
while not eof(t) do
  begin
   readln(t);
   i:=i+1;
   if (i mod 50 = 0) then
    begin
     writeln(t,chr(13));
    end;
  end;
 close(t);
 readln;
end.
Len problém je ten, že nemôžeš zo súboru naraz aj čítať aj zapisovať...
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Zas ten hnusny pascal...

Príspevok od používateľa 3PO »

da sa to vcelku jednoducho obist. bude pracovat s dvoma subormi. z jedneho bude citat. kazdy precitany riadok zapise aj s poradovym cislom do druheho suboru.a je to.
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: Zas ten hnusny pascal...

Príspevok od používateľa Gregi »

Presne tak :smt006
ranger.sk
Amateur
Amateur
Príspevky: 18
Registrovaný: 18 nov 2009, 11:06

Re: Zas ten hnusny pascal...

Príspevok od používateľa ranger.sk »

Gregi napísal:Nespravne polozena otazka a este nespravnejsie odpoved. Jedine ta 13 je k veci. To chces cislovat vytvarany subor, alebo uz vytvoreny? A co myslis pod tym odentrovanim? Akoze pri kazdom 50. riadku sa da jeden ENTER naviac (prazdny riadok)? Z toho co si napisal nie je jednoznacne co vlastne chces. Tak sup sup a pis k veci. A co je to za odpoved While .... i:=i+1. Vsak to mozem povedat taku odpoved hadam na 99% programov (To je ako Nostradamusove proroctva, vzdy sa dopasuju tak, ze akosi sedia).
No ma to byt z vytvoreneho suboru, a uzivatel ma stlacit enter po kazdom 50 riadku, aby to bolo prehladnejsie.

//autoeditácia príspevku (04 Mar 2010, 9:17)
Diky za help ;) S vasou pomocou ma uz nieco napadlo :))
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: Zas ten hnusny pascal...

Príspevok od používateľa Gregi »

Takze asi takto:

Kód: Vybrať všetko

Program TEXT_EDIT;
uses Crt;
var
  zdroj,vysledok: text;
  i: Longint; {max 2147483647 riadkov}
  riadok: string;

function IntToStr(i: Longint): string; { konvertovanie cisla na retazec }
var
  s: string;
begin
  Str(i,s);
  IntToStr:=s;
end;


BEGIN
  ClrScr;
  Assign (zdroj,'cesta k zdojovemu suboru');
  Assign (vysledok,'cesta k vytvaranemu suboru');
  Reset (zdroj); {otvor subor <zdroj>}
  Rewrite (vysledok); {vytvor, premaz subor <vysledok>}
  i:=1;
  While not (Eof (zdroj)) do begin {pokial nie je koniec suboru <zdroj>, pokracuj v slucke}
    ReadLn (zdroj,riadok); {nacitaj riadok zo <zdroj> a uloz do <riadok>}
    WriteLn (vysledok,IntToStr(i)+' '+riadok); {zapis do vysledku}
    if i mod 50=0 then begin
      Write (vysledok,IntToStr(i+1)+#13); {ak je to kazdy 50-ty riadok, vloz iba cislo a ENTER <#13>}
      Inc(i);
    end;
    inc(i); {inkrementuj i o 1}
  end;

END.
Napísať odpoveď