Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Частотный букварь текста [XP]


Indigo ©   (2007-12-18 12:59:00) 

Необходимо было в паскале написать программу, которая составляет частотный букварь текста, т.е. необходимо посчитать количество использований в тексте каждого символа. Я написал, но при выводе результатов все счётчики на нулях:
var text:string; i,j:integer; z:char;
a: array [1..256] of integer;
b: array [1..256] of char;

procedure sABC(text:string; a: array [1..256] of integer; b: array [1..256] of char);
begin
For i:=1 to 256 do b[i]:=chr(i-1);
for i:=1 to length(text) do begin
   For j:=1 to 256 do
   If text[i]=b[j] then a[j]:=a[j]+1;
   end;
end;

begin
    Writeln('Enter a text in English language:');
    Readln(text);
    sABC(text, a, b);
    For i:=0 to 255 do Write(i+1, ') ', chr(i), ':', a[i+1], ' ');
end.


Просьба указать на ошибку. Заранее спасибо.


Indigo   (2007-12-18 14:00:00) [1]

Просто идеально, спасибо за помощь!


Sha   (2007-12-18 13:58:00) [2]

Также в твоем случае, кроме отказа от использования массива b,
целесообразно объявить a: array [ #0..#255] of integer;
тогда подсчет символов будет выглядеть более прозрачно:

for i:=1 to length(text) do inc(a[text[i]]);


Sha   (2007-12-18 13:58:00) [3]

))


MBo   (2007-12-18 13:49:00) [4]

еще проще использовать возможность языка - индексирование массива любым порядковым типом

a: array[Char] of Integer

for i:=1 to length(text) do
 Inc(a[text[i]]);


Sha   (2007-12-18 13:44:00) [5]


for i:=1 to length(text) do begin
  For j:=1 to 256 do
  If text[i]=b[j] then a[j]:=a[j]+1;
  end;


попробуй заменить на


for i:=1 to length(text) do inc(a[1+ord(text[i])]);


Indigo   (2007-12-18 13:11:00) [6]

Спасибо огромное, теперь всё ок :)


Плохиш   (2007-12-18 13:07:00) [7]


> procedure sABC(text:string; vara: array [1..256] of integer;
>   varb: array [1..256] of char);


morgoth   (2007-12-18 13:07:00) [8]

ошибка здесь
procedure sABC(text:string; a: array [1..256] of integer; b: array [1..256] of char);


Наверх

Титульная страница Поиск, карта сайта Написать письмо