Pascal a filtrowanie tekstu

0

[???] Filtrowanie tekstu w pascalu

Ponownie proszę o pomoc dotyczącą problemu z jakim się zetknąłem, gdyż mój pierwszy post gdzieś przepadł. Program, który chcę napisać w Turbo Pascalu 7.0, miałby za zadanie filtrować tekst, zapisany w notatniku z niepotrzebnych znaków. Tekst wygląda następująco:

00 011817 00 deluge = potop, ulewa= = flood= = 11817==
00 011830 00 sought = = = = = 11830==
01 000041 12 aggressive = agresywny= = = = 00041==
01 006068 12 alive = żywy (nie martwy)= = live= = 06068==
01 011646 12 animal = zwierzęcy= = = = 06681==

Natomiast program oczyściłby go z niepotrzebnych znaków, którymi są: liczby przed słówkami i po słówkach oraz znaki '=' ale tylko po ostatnim słowie każdej linii i ewentualnie pogrubił pierwszy wyraz w każdej z linijek. Tzn. powinno to wyglądać tak:

deluge = potop, ulewa= = flood
sought
aggressive = agresywny
alive = żywy (nie martwy)= = live
animal = zwierzęcy

Jeśli to możliwe prosiłbym wszystkich, którzy mogą mi pomóc o pomoc przy tym programie,
gdyż programować uczę się sam, w domowym zaciszu i nie mam się do kogo zwrócić. Do tej pory udało mi się napisać coś na takiego:

Program znakii6;
uses crt;
type
litery=set of char;
var
l,t:text;
a:char;
znaki:litery;
liczby:litery;
begin
clrscr;
assign (t,'c:\pliko.txt');
assign(l,'c:\pli.txt');
rewrite(l);
reset(t);
znaki:=[#62..#168,' '];
liczby:=['='];
while not eof(t) do
begin
read(t,a);
if (a in znaki) then
write(l,a);
if a in liczby then write(l,#13);
end;
close(l);
close(t);
readln;
end.

niestety efekt jest mało ciekawy, nie ma polskich znaków diakrytycznych, jest np.: ‘ś’, ale NIE MA m.in.: ‘ż’, ‘ć’ itd. Tzn. jest to mniej więcej coś takiego:
deluge
potop ulewa

flood

sought 


aggressive 

agresywny

alive 

ywy nie martwy

live

animal 

zwierzcy

animal 

zwierz

Dlatego proszę o pomoc gdyż programować uczę się sam, w domowym zaciszu i nie mam się do kogo zwrócić.
Mi jednak to zadanie nie daje spokoju i chciałbym przynajmniej poznać jego rozwiązanie.
P.S. Dziękuję DETOXOWI za wskazanie tego forum.

0

rozbij sprawdzanie na trzy pętle: jedną while, która usunie znaki inne niż litery (konkretnie znaki < #65 bez spacji), i drugą, która będzie działać od końca tak samo, jak pierwsza od początku.

0
{nie bardzo chce mi się czytać co napisałeś ale tak usuniesz wszystkie cyfry (przerób sobie assignfile na assign i zadziała w paskalu}
var f, g:textfile;
b:byte;
s:string;
begin
assignfile(f,'c:\n.txt');
reset(f);
assignfile(g,'xx.txt');
rewrite(g);
repeat
readln(f,s);
for b:=48 to 57 do
repeat
delete(s,pos(char(b),s),1);
until pos(char(b),s)<=0;
writeln(g,s);
until eof(f);
closefile(f);
closefile(g);
end;
0

Dzięki za kod programu rzeczywiściw szystko działa ale co zrobić aby jeszcze doprowadzić to do takiej postaci bez znaków ==== na końcu linijek, ale żeby pomiędzy wyrazami pozostaly np. do czegoś takoego:

deluge = potop, ulewa

itd.
Bo teraz jest ale tak

deluge = potop, ulewa ===

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