Skocz do zawartości
Zaloguj się, aby obserwować  
shalan

Pascal liczenie znaków - lekkie doszlifowanie

Polecane posty

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 :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

Wczytywanie...
Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...