Дан файл содержащий текст набранный заглавными английскими буквами. Провести частотный анализ текста, то есть указать (в %), сколько раз встречается та или иная буква. Помогите пожалуйста, препод двойку поставил за семестр и дал три задачи, одну нашел на форуме, одну решил сам. С этой никак не разберусь, ведь сначала надо подсчитать количество символов в тексте?
ну... например:
заводишь массив:
letters = array['A'..'Z'] of integer;
Спасибо! Но не очень понимаю, а как текст преобразовать в строку? Не, не могу разобраться, если можно поподробней и сильно не пинайте - я с 10 утра уже парюсь
read(fi, s);{fi -- файловая переменная }
Кто нибудь может разобраться и решить эту задачу ну оочень надо!
мисс_граффити тебе ее уже решила:)
осталось только немного дописать. http://forum.pascal.net.ru/index.php?showtopic=3584 тебе в помощь...
Ха! Разобрался, всем спс за ответы.
Program lab;
uses crt;
var letters:array[0..26] of word;
s:string;
t,all:word;
f:text;
begin
clrscr;
assign(f,'D:\File.txt');
reset (f);
read(f,s);
for t:=1 to length(s) do
if((upcase(s[t])>='A')and(upcase(s[t])<='Z')) then
begin
inc(letters[ord(upcase(s[t]))-ord('A')]);
inc(all);
end;
writeln('--------------------------------');
for t:=0 to 25 do
if(letters[t]>0)then
writeln(chr(t+ord('A')),': ',letters[t]:3,' ',letters[t]/all*100:3:0,'%');
Writeln;
writeln('all char: ',all);
readln;
end.
Строка
readln(s);- просто лишняя... Без нее нет никаких ошибок, программа прекрасно работает (если файл состоит из одной строки... Если больше - то надо зациклить чтение строки из файла и подсчет количества букв...)
Действительно обрабатывает только 255 символов! А как зациклить чтение из файла и подсчет букв? Ответьте пожалуйста!