nie wiem skąd ta niepewność, dobrze Ci szło..
Kod: Zaznacz cały
program liczbalinii;
var p:text;
function liczba_linii(var plik:text):integer;
var szukane_linie,l,k:integer; znak:char;
begin
szukane_linie:=0;
while not eof(plik) do begin
l:=0; k:=0;
while not eoln(plik) do begin
read(plik, znak);
if ( (znak>='a') and (znak<='z') ) then l:=l+1;
if ( (znak>='A') and (znak<='Z') ) then k:=k+1;
end;
if k>l then szukane_linie:=szukane_linie+1;
readln(p);
end;
liczba_linii:=szukane_linie;
end;
begin
assign(p,'plik.txt');
reset(p);
writeln('Liczba linii: ', liczba_linii(p));
close(p);
end.
wiele to ja nie dodałem.. zauważ, że
szukane_linie jest tutaj naszą szukaną wartością, więc domyślne ustawiam ją na zero na samym początku.. potem zmienne
k, l są tak jakby lokalne dla każdej linii (bo w każdej linii chcemy wiedzieć ile jest liter małych oraz dużych) dlatego przed pętlą while not eoln ale w pętli while not eof zawsze na początku są zerowane, a potem zliczany w pętli while not eoln.. po przejściu tej pętli w zależności od spełnionej nierówności pomiędzy ilością tych liter zwiększamy naszą szukaną wartość lub nie i ją na końcu zwracamy w ostatniej linijce tej funkcji.. koniec