Skocz do zawartości

delphi jak napisać program który będzie liczył występowanie poszczególnych liter w pliku


sinilotomasz

Rekomendowane odpowiedzi

Proste.

1) Wczytaj plik do jakiegoś Memo.

2) Zrób tablicę Integerów od a do z

3) Zrób procedurę jadącą forem przez wszystkie znaki Memo i podnoszącą o 1 konkretny element tablicy

 

Możesz też np. zrobić tablicę 0..255 i liczyć ew. wszystkie znaki.

 

A tak w ogóle to konsolowo czy okienkowo?

Odnośnik do komentarza
Udostępnij na innych stronach

tylko litery z alfabetu bez polskich

 

 

Proste.

1) Wczytaj plik do jakiegoś Memo.

2) Daj jakiegoś Edita czy coś, gdzie wpisujesz literę

3) Zrób tablicę Integerów od a do z

3) Zrób procedurę jadącą forem przez wszystkie znaki Memo i podnoszącą o 1 konkretny element tablicy

 

Możesz też np. zrobić tablicę 0..255 i liczyć ew. wszystkie znaki.

 

A tak w ogóle to konsolowo czy okienkowo?

 

 

okienkowo

Odnośnik do komentarza
Udostępnij na innych stronach

var
  counts: array[65..90] of integer;

Procedura na naciśnięciu przycisku. Memo to pole z tekstem, Memo1 to pole z wynikami szukania.

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s:integer;
begin
  for i:=0 to length(Memo.Text)-1 do begin
    s:=Ord(Memo.Text[i]);
    if((s>96)and(s<123)) then s:=s-32;
    if((s>64)and(s<91)) then counts[s]:=counts[s]+1;
  end;
  for i:=65 to 90 do
    if(counts[i]>0) then begin
      Memo1.Text:=Memo1.Text+Chr(i)+' : '+IntToStr(counts[i]);
      Memo1.Lines.Add('');
    end;
end;

FormCreate:

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i:=65 to 90 do counts[i]:=0;
end;

Odnośnik do komentarza
Udostępnij na innych stronach

Prubowałem to zrobić tak ale mi coś nie wychodzi

 

program licz;

{$APPTYPE CONSOLE}

uses

SysUtils;

function zliczaj_litery(litera:char):integer;

 

var

Litery:array [65..122] of integer;

i:integer;

plik:Text;

nazwa_pliku:String;

 

Znak:Char;

linia : string;

licznik:integer;

 

begin

linia:=0;

Writeln('Podaj nazwe pliku, ktory chcesz otworzyc (pamietaj o rozszerzeniu!)');

Readln(nazwa_pliku);

Assign(plik,nazwa_pliku);

Reset(plik);

while not EOF(plik) do

begin

read(plik,linia); // kopiowanie każdej linii dokumentu do zmiennej linia

For i:=1 to length(linia) do // badanie każdego znaku w linii

if (litery)=znak then inc(licznik) // jeśli znaleziono licznik zwiększamy

close(plik);

end.

Odnośnik do komentarza
Udostępnij na innych stronach

Coś takiego:

program licz;
{$APPTYPE CONSOLE}
uses
SysUtils;

var
Litery:array [65..90] of integer;
i,s:integer;
plik:Text;
nazwa_pliku,text:String;

Znak:Char;
linia : string;
licznik:integer;

begin
Writeln('Podaj nazwe pliku, ktory chcesz otworzyc (pamietaj o rozszerzeniu!)');
Readln(nazwa_pliku);
Assign(plik,nazwa_pliku);
Reset(plik);
while not EOF(plik) do
begin
read(plik,linia);
text:=text+linia;
end;
close(plik);
  for i:=0 to length(text)-1 do begin
    s:=Ord(text[i]);
    if((s>96)and(s<123)) then s:=s-32;
    if((s>64)and(s<91)) then litery[s]:=litery[s]+1;
  end;
  for i:=65 to 90 do
    if(litery[i]>0) then begin
      WriteLn(Chr(i),' : ',counts[i]);
    end;
end.

?

Nie sprawdzałem czy działa :P

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...