[Pascal] program liczący ilość małych liter w pliku

ct985
Użytkownik
Użytkownik
Posty: 184
Rejestracja: 13 paź 2011, o 20:36
Płeć: Kobieta
Lokalizacja: Warszawa
Podziękował: 71 razy

[Pascal] program liczący ilość małych liter w pliku

Post autor: ct985 »

Mam problem z programem liczącym ilość małych liter w pliku:

Kod: Zaznacz cały

program ilosc_malych_liter;
uses crt;

var    p:text;

function ilosc(var plik:text):integer;
var
        l:integer; znak:char;

begin
        while not eof(plik) do begin
        l:=0;
        while not eoln(plik) do begin
        read(plik, znak);
        if ((ord(znak)>='97') and ord(znak)<='122')) then l:=l+1;
        end;
        end;
end;

begin

        assign(p,'plik.txt');
        reset(p);

        writeln('Ilosc malych liter w pliku', ilosc(p));
        close(p);
        readln
end.
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[Pascal] program liczący ilość małych liter w pliku

Post autor: adambak »

Kod: Zaznacz cały

program ilosc_malych_liter;

var p:text;

function ilosc(var plik:text):integer;
var l:integer; znak:char;
begin
  l:=0;
  while not eof(plik) do begin
    while not eoln(plik) do begin
      read(plik, znak);
      if ( (znak>='a') and (znak<='z') ) then l:=l+1;
    end;
    readln(p);
  end;
  ilosc:=l;
end;

begin
  assign(p,'plik.txt');
  reset(p);

  writeln('Ilosc malych liter w pliku: ', ilosc(p));

  close(p);
end.
teraz jest ok..

-- 17 lut 2012, o 18:21 --

zobacz, że źle sprawdzałaś warunek czy litera jest małą literą (jeśli już decydujesz się na ord to w nierównościach powinny być liczby, a nie znaki w cudzysłowach).. dobrze czytasz plik (tzn dobra struktura, że dwie pętla jedna od eofa druga od eolna), ale zabrakło czytania tego eolna w pliku, jak i zwrócenia wartości przez funkcję oraz wyzerowania zmiennej l tylko na poczatku funkcji a nie w pętli.. prześledź to, powinno być teraz jasne co i jak..
ODPOWIEDZ