Program zliczający literki, napisany w Pascalu

0

Na początek chciałem się przywitać, jest to mój pierwszy i prawdopodobnie nie ostatni post na tym forum. Więc przechodząc do sedna sprawy, mam problem z napisaniem programu, który ma otwierać plik txt(z czym problemu nie mam), a następnie zliczać ile znajduje się wybranych przez użytkownika literek w tekście zawartym w owym pliku, np. użytkownik podaje a i program liczy ile jest wszystkich literek a w treści. W google znalazłem nieco tego typu programów, jednak nie dokładnie takich jak potrzebuje muszę go napisać z wykorzystaniem poleceń EOL i EOF i napisać funkcje, która właśnie liczy. Bym był wdzięczny, jeśli ktoś był by w stanie napisać kod takiego programu, potrzebuje go do szkoły na wtorek i nie mam go zamiar bezmyślnie skopiować, tylko zrozumieć, bo mam niestety problem z funkcją liczenia literek. Z góry dziękuję za pomoc.

2

Tak za darmo ?
To będzie ciężko. Nie dostaniesz za free. Powiedz, jaki masz problem.
BTW.Masz problem z pętlą while,for oraz jednym if'em ?

0

Nie wiem właściwie jak się w ogóle wziąć za tą funkcję, choć troche mnie dziwi że za dosyć prosty program trzeba płacić prosiłbym przynajmniej o jakieś rady.

1

Całego kodu Ci nie podam, tylko fragment odczytujący dane z pliku. Dodatkowo program nie wykorzystuje funkcji Eoln, bo nie jest potrzebna (chociaż można napisać kod z jej wykorzystaniem), nie ma też oddzielnej funkcji obliczającej wystąpienia danego znaku. Możesz sobie to poprawić, udoskonalić, co tam chcesz. Oczywiście jeżeli rzeczywiście chcesz się nauczyć i zrozumieć, jak napisałeś

program Liczydlo;

var Plik: Text;
    Znak, Szukany: Char;
    Licznik: Integer;

begin
  // Zapytaj uzytkownika, jakiego znaku szukac
  // Wczytaj ten znak
  // Skojarz zmienna plikowa z fizycznym zbiorem danych (plikiem)
  // Otwórz plik do odczytu
  // Wyzeruj licznik
  while not Eof(Plik) do begin
    Read(Plik, Znak);
    if Znak = Szukany then Inc(Licznik);
  end;
  // Zamknij plik
  // Wyswietl wynik
end.
1

Z tego względu, że jesteś nowy i się z nami przywitałeś xD napisałem Ci coś na zachętę:

 
var
plik: text;
temp: string;
Ile, i: integer;
Jaka: Char;

begin
  Ile:=0;
  Assign(plik, 'plik.txt');
  reset(plik);
  Writeln('Jakiej litery szukasz:');
  readln(Jaka);

  repeat
    readln(plik,temp);

    for I := 1 to Length(temp) do
    if Jaka = temp[i] then inc(Ile);

  until EOF(plik);

  Writeln('Litera "'+Jaka+'" Znajduje sie '+inttostr(Ile)+ ' razy');
  close(plik);
  readln;
end.
1

Koledzy dali rozwiązanie a ja jeszcze dam taki mały programik co policzy wszystkie literki za jednym przebiegiem :)

program licz;
var
plik: text;
i:integer;
znak:char;
liczniki:array[0..255] of integer;
begin
assign(plik,'plik.txt');
reset(plik);
while not eof(plik)
        do begin
        read(plik,znak);
        inc(liczniki[ord(znak)]);
        end;
        close(plik);

        for i:= 0 to 255 do
writeln(  char(i) ,  ' : ' ,  liczniki[i]) ;
readln;
end.
 
0

Wielkie dzięki za pomoc, nieco go zmieniałem i działa tak jak chciałem ;)

program abc;
uses crt;
var
Ile, i: integer;
Jaka: Char;
w: string;
function liczyk():string;
var
plik: text;
temp: string;
begin
  Ile:=0;
    Assign(plik, w);
  reset(plik);
  repeat
    readln(plik,temp);
    for I := 1 to Length(temp) do
    if Jaka = temp[i] then inc(Ile);

  until EOF(plik);
      close(plik);
     end;
     begin
     clrscr;
     writeln('Podaj sciezke');
     readln(w);
       Writeln('Jakiej litery szukasz:');
     readln(Jaka);
  Writeln(liczyk, 'Litera ',Jaka,' powtarza sie ',Ile, ' razy');

  readln;
end.
 
0
kwiatek13 napisał(a)

Wielkie dzięki za pomoc, nieco go zmieniałem i działa tak jak chciałem ;)

Bardzo ciekawe jest to, co piszesz!
Jeśli według Ciebie program działa tak, jak chciałeś, gdy w rzeczywistości nie działa w ogóle, to nie pozostaje mi nic innego, niż się z Tobą zgodzić ;)

PS. Gdybyś nie zrozumiał aluzji: Twoje poprawki spowodowały, że program przestał działać

0
simplex napisał(a)
kwiatek13 napisał(a)

Wielkie dzięki za pomoc, nieco go zmieniałem i działa tak jak chciałem ;)

Bardzo ciekawe jest to, co piszesz!
Jeśli według Ciebie program działa tak, jak chciałeś, gdy w rzeczywistości nie działa w ogóle, to nie pozostaje mi nic innego, niż się z Tobą zgodzić ;)

PS. Gdybyś nie zrozumiał aluzji: Twoje poprawki spowodowały, że program przestał działać

Przecież wszystko bez problemu działa, może masz jakiś problem z kompilatorem, ja używam Free Pascal, jeżeli to ma jakiś wpływ na działanie programu.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.