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.
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 ?
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.
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.
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.
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.
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.
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ć
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.