Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 15:55   #1
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию Априорная вероятность

Пишу программу, которая бы высчитывала априорную вероятность каждой буквы русского алфавита (е=ё) в тексте.
Ребят, подскажите из-за чего выскакивает ошибка в выделенной строке?

Код:
var
  rr:extended; //общее количество букв
  massiv:array[1..32] of string; //массив букв.
  povtor:array[1..32] of integer; //массив повторений буквы в тексте.
  apr:array[1..32] of extended; //массив априорных вероятностей.

procedure TForm1.Go1Click(Sender: TObject);
begin
massiv[1]:='a';
massiv[2]:='б';
massiv[3]:='в';
massiv[4]:='г';
massiv[5]:='д';
massiv[6]:='е';
massiv[7]:='ж';
massiv[8]:='з';
massiv[9]:='и';
massiv[10]:='й';
massiv[11]:='к';
massiv[12]:='л';
massiv[13]:='м';
massiv[14]:='н';
massiv[15]:='о';
massiv[16]:='п';
massiv[17]:='р';
massiv[18]:='с';
massiv[19]:='т';
massiv[20]:='у';
massiv[21]:='ф';
massiv[22]:='х';
massiv[23]:='ц';
massiv[25]:='ш';
massiv[24]:='щ';
massiv[26]:='ч';
massiv[27]:='ъ';
massiv[28]:='ы';
massiv[29]:='ь';
massiv[30]:='э';
massiv[31]:='ю';
massiv[32]:='я';
for j:=1 to 32 do
for i:=1 to Length(Memo1.Text) do
if memo1.lines.Text[i]=massiv[j] then inc(povtor[j]);
for i:=1 to 32 do
begin
Stringgrid1.Cells[0,j]:=massiv[j];
apr[j]:=(povtor[j])/rr;
Stringgrid1.Cells[1,j]:=inttostr(povtor[j]);
Stringgrid1.Cells[2,j]:=floattostr(apr[j]);
end;
end;

Последний раз редактировалось Stilet; 08.03.2011 в 13:57.
deathz0r вне форума Ответить с цитированием
Старый 07.03.2011, 16:05   #2
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

что за ошибка?
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 07.03.2011, 16:10   #3
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

при запуске программы и выполнении побочных действий все ок, но когда жму Go! вылезает непонятная ошибка, а в низу пишет "For loop control variable must be simple local variable
deathz0r вне форума Ответить с цитированием
Старый 07.03.2011, 16:48   #4
Kotlyar562
Пользователь
 
Аватар для Kotlyar562
 
Регистрация: 03.02.2010
Сообщений: 46
По умолчанию

не, не то)

Последний раз редактировалось Kotlyar562; 07.03.2011 в 16:49. Причина: ошибся
Kotlyar562 вне форума Ответить с цитированием
Старый 07.03.2011, 21:28   #5
pwian
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 21
По умолчанию

а если попробовать переменные i,j определить в процедуре
Цитата:
procedure TForm1.Go1Click(Sender: TObject);
pwian вне форума Ответить с цитированием
Старый 08.03.2011, 11:47   #6
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

попробовал, результат тот же
deathz0r вне форума Ответить с цитированием
Старый 08.03.2011, 12:30   #7
pwian
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 21
По умолчанию

А если
Код:
for i:=1 to 32 do
begin
Stringgrid1.Cells[0,j]:=massiv[j];
apr[j]:=(povtor[j])/rr;
Stringgrid1.Cells[1,j]:=inttostr(povtor[j]);
Stringgrid1.Cells[2,j]:=floattostr(apr[j]);
end;
заменить на
Код:
for j:=1 to 32 do
begin
Stringgrid1.Cells[0,j]:=massiv[j];
apr[j]:=(povtor[j])/rr;
Stringgrid1.Cells[1,j]:=inttostr(povtor[j]);
Stringgrid1.Cells[2,j]:=floattostr(apr[j]);
end;
Смысл измениться?

Последний раз редактировалось Stilet; 08.03.2011 в 14:00.
pwian вне форума Ответить с цитированием
Старый 08.03.2011, 12:52   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
For loop control variable must be simple local variable
В цикле for не объявлена локальная переменная.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.03.2011, 13:11   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

apr[j]:=(povtor[j])/rr;

использование переменной j ВНЕ цикла.

for j:= ... do begin

P.S. ни одна из переменных (rr, povtor[]) не инициализированы.
(не присвоены НАЧАЛЬНЫЕ значаения.

P.P.S. возможно и другая ошибка. неправильное использование индекса.
j вместо i.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.03.2011 в 13:17.
evg_m вне форума Ответить с цитированием
Старый 08.03.2011, 14:32   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

не пойму, а то, что rr объявлено как extended никого не смущает ?

)) упс проглядел ) что и apr - тоже ))

тогда просто скажу такие вещи:
1. завести const endcharnum = 32 и везде вместо 32 использовать её (имя можно и другое взять)
2 буквы надо делать массив не string а char, и инициализировать не тем монстром (индусским кодом), а сделать цикл
Код:
var i : char;
...
for i := 'а' to 'я'
  do massiv[ord(i)-223] := i; // здесь 223 это смещение русской буквы а в таблице символов

Последний раз редактировалось phomm; 08.03.2011 в 14:58.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вероятность выпадения в процентах ololo-schoolboy Общие вопросы C/C++ 6 25.01.2011 20:54
вероятность alexy Паскаль, Turbo Pascal, PascalABC.NET 0 26.12.2010 16:03
Вероятность 60% Editor Общие вопросы Delphi 9 03.02.2010 19:04
Вероятность выйгрыша в казино. Izhic Свободное общение 7 17.06.2009 11:18
Задача (вероятность) Witaliy Помощь студентам 4 26.02.2009 09:45