Jump to content
Sign in to follow this  
shalan

Pascal liczenie znaków - lekkie doszlifowanie

Recommended Posts

Witam wszystkich!

Potrzebuję pomocy w lekkim (taką mam nadzieję) doszlifowaniu kodu.

 

Mam coś takiego:

 

program liczeniedzialajace;
USES CRT;

VAR
t:file of char;
a:char;
krop,wykrz,pyt,licz,dwuz,uo,uz:longint;

BEGIN
clrscr;
krop:=0;
wykrz:=0;
pyt:=0;
licz:=0;
dwuz:=0;
uo:=0;
uz:=0;
assign(t, 'plik.txt');
reset(t);

  			while not eof(t) do
  			begin;
  			read(t,a);
  			if (a=chr(46))                  	then krop:=krop+1;
  			if (a=chr(33))                  	then wykrz:=wykrz+1;
  			if (a=chr(63))                  	then pyt:=pyt+1;
  			if (a>=chr(48)) and (a<=chr(57))	then licz:=licz+1;
  			if (a=chr(85)) or (a=chr(117))  	then uo:=uo+1;
  			if (a=chr(162)) or (a=chr(224)) 	then uz:=uz+1;
  			end;

writeln('W pliku jest ' ,krop, ' zdan zakonczonych kropka, ' ,wykrz,' zdan zakonczonych wykrzyknikiem, '
                 	,pyt, ' pytan i ' ,licz, ' liczb, a stosunek u do ' ,chr(162), ' wynosi ' ,uo,':',uz);
close(t);

readkey;
END.

 

Moim zadaniem było (cytuję dosłownie)

"Napisz program oraz funkcję która policzy ile zdań nie lub kończy się kropką. funkcję która policzy ile zdań kończy się kropką, ile jest zdań bez cyfr. -ile jest liczb w pliku; Zapis i odczyt tekstu z pliku, zapis wyników do pliku. Funkcje która policzy stosunek 'ó' do 'u'."

Upraszczając: muszę napisać program, który wczyta plik i będzie zawierał funkcje liczące:

-zdania kończące się kropkami,

-zdania kończące się innymi znakami,

-zdania kończące się dwuznakiem '?!',

-zdania bez liczb,

-liczby w pliku,

-ilość 'u' oraz 'ó' i ich stosunek.

 

Znalazłem podobny kod do tego (dodałem swoje zmienne), ale mój problem polega na tym, że gdy program znajdzie cyfrę nie potrafię odwołać się do kolejnej pozycji (aby sprawdzić, czy kolejny znak również jest cyfrą); to samo w przypadku dwuznaku '?!'. Próbowałem robić coś na zasadzie a+1, jednak prawdopodobne problemy ze składnią uniemożliwiają kompilację.

Gdzieś w internetach wyczytałem, żeby kombinować coś z true/false, jednak nie wiem co i jak, bo nie potrafię odwołać się do kolejnej pozycji.

Kolejnym problemem jest to, że Pascal nie wyświetla 'ó', nawet jeśli wstawiam go jako znak ASCII.

 

Myślałem też, żeby zrobić to w trochę inny sposób, coś na zasadzie wczytania tekstu z pliku do zmiennej (lub zabawy z tablicą) typu string bez limitu znaków (gdzieś o takim cudzie wyczytałem), wtedy poszłoby już raczej bez problemów.

 

Wstawienie tego wszystkiego do funkcji również nie powinno sprawić mi problemów pod warunkiem, że będę miał już gotowy, działający program.

 

Jeśli ktoś byłby w stanie udzielić mi jakichś wskazówek (w końcu muszę nauczyć się tego sam), to byłbym wdzięczny :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...