Witam. Jestem poczatkujacym "programista" i mam problem w napisaniu programu, ktory odczytuje z biezacego katalogu plik tekstwy(np:dane.txt). Zakladajac ze plik sklada sie z 20 wierszy ,a w kazdym wierszu jest 60 znakow. I chcialbym zeby mi wyswietalo srednia liczbe znwokow w wiwerszu :ogolem, liter, cyfr i spacji. Bylbym bardzo wdzieczny za pomoc. pozdrawiam Czaki
mam taki napisany w deliphi. nie czyta tylko sredniej ilosci, ale to nie problem dodac. Pisz na maila
Postaram się coś podpowiedzieć, tylko że też jestem początkującym , więc sprawdz to:
procedure czytaj;
var
f: TekstFile;
znak : char;
srednia:integer;
begin
assignfile(f,'jakis_plik.txt'); //do zmiennej f przypisz plik 'jakis_plik.txt'
restet(tf) //otwórz plik do odczytu;
while not(eof) do //dopuki plik się nie skończy....
begin
repeat //powtarzaj...
read(f,znak);
i:=i+1;
memo1.text:=memo1.text+znak;
until znak<>#13 //dopuki znak różny od ENTERA
srednia:=(i+srednia)/2 //oblicz srednia ilości liter z dotychczasowych wierszy
i:=0;
end;
end;
Nawet jak nie zadziała to chyba cały tok rozumowania umieściłem w tej procedurce, dasz radę! :)
Anonim masz tam mały bład nie wiem czy ta procedura <ort>w ogóle </ort>bedzie działac bo nie sprawdzałem ale zamiast TekstFile powinno byc TextFile ;-) taki mały drobiazg.
Hmm to co napisał Anonim jest kompletnie pozbawione sensu .. nie dość, że kod ma błędy (nie mówię o literówkach) to jeszcze takie działania nic nie robią .. - poza tym - na przyszłość -wczytywanie do memo robi się od razu przez LoadFromFile.. a tak w ogóle to memo tu nie jest do niczego potrzebny.
Po prostu po kolei zliczaj wszystkie litery, znaki, itd (albo operuj na zbiorach, albo sprawdzaj po numerze ASCII).. później jak będziesz miał ilości, to już pestka.
Function Licz(Const Name:String):Real;
Var F:TextFile;
Suma,Ilosc:Integer;
Linia:String;
Begin
AssignFile(F,Name);
Reset(F);
Suma:=0;
Ilosc:=0;
While Not Eof(F) Do
Begin
Readln(F,Linia);
Inc(Suma,Length(Linia);
Inc(Ilosc);
End;
CloseFile(F);
Result:=Suma/Ilosc;
End;