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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2011, 15:09   #11
pwian
Пользователь
 
Регистрация: 03.07.2009
Сообщений: 21
По умолчанию

а ты сам-то попробую вывести на экран:
Цитата:
а сделать цикл
Код:

var i : char;
...
for i := 'а' to 'я'
do massiv[ord(i)-223] := i; // здесь 223 это смещение русской буквы а в таблице символов
pwian вне форума Ответить с цитированием
Старый 08.03.2011, 15:27   #12
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Просто параметр цикла i объявлен где-то в другом месте и для процедуры, где используется, является глобальной переменной... Сообщение же гласит, что используемый параметр цикла должен быть ЛОКАЛЬНОЙ переменной, т.е. описан в разделе описаний данной процедуры...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 09.03.2011, 18:53   #13
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

Ребят, попробовал сделать с учетом замечаний, результат тот же, ошибка в той же строке, привел полный листинг программы:

оффтоп: Админ, извини, не знаю каким шрифтом оформлять код.

Код:
var
  Form1: TForm1;
  F:textfile;
  s:string;
  sp:string;
  r:extended;
  rr:extended;
  j:integer;
  massiv:array[1..32] of string;
  massiv2:array[1..32] of string;
  massiv3:array[1..32,1..32] of integer;
  massiv4:array[1..32,1..32] of extended;
  povtor:array[1..32] of integer;
implementation

{$R *.dfm}

procedure TForm1.open1Click(Sender: TObject);
begin
memo1.Lines.clear;
if OpenDialog1.Execute
then AssignFile(F, OpenDialog1.FileName)
else Exit; Reset(F);
while Not EOF(F) do
begin
Readln(F, S) ;
Memo1.Lines.Add(S);
end;
CloseFile(F);
end;

procedure TForm1.LengthBefore1Click(Sender: TObject);
var i:integer;
begin
r:=0;
for i:=0 to memo1.lines.count-1 do
r:=r+length(memo1.Lines[i]);
edit1.Text:=floattostr(r);
end;

procedure TForm1.LengthAfter1Click(Sender: TObject);
var i:integer;
begin
rr:=0;
for i:=0 to memo1.lines.count-1 do
rr:=rr+length(memo1.Lines[i]);
edit2.Text:=floattostr(rr);
end;

procedure TForm1.Editing1Click(Sender: TObject);
const
nums = ['а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ш','щ','ч','ъ','ы','ь','э','ю','я'];
var m,i:integer;
begin
  for i  := 0 to memo1.Lines.Count -1 do
    begin
      s:=memo1.Lines.Strings[i];
      m:=1;
      while m <= length(s) do
        begin
          if [s[m]]*nums<>[s[m]]
            then delete(s,m,1)
            else m:=m+1;
        end;
      Memo1.Lines.Strings[i]:=s;
    end;
while Memo1.Lines.Strings[Memo1.Lines.Count-1] = '' do
memo1.Lines.Delete(Memo1.Lines.Count-1);
for i:=0 to memo1.lines.Count - 1 do begin
if trim(memo1.Lines.Strings[i]) = '' then begin
while (trim(memo1.Lines.Strings[i])= '') and (i <= memo1.lines.Count - 1) do Memo1.Lines.Delete(i);
end;
memo1.Lines.Strings[i]:=trim(memo1.Lines.Strings[i]);
end;
end;

procedure TForm1.Go1Click(Sender: TObject);
var
z:integer;
k:integer;
i:integer;
rrr:extended;
apr:array[1..32] of extended;
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]:='я';
Stringgrid1.Cells[0,0]:='Буква Алфавита';
Stringgrid1.Cells[1,0]:='Количество совпадений';
Stringgrid1.Cells[2,0]:='Априорная вероятность';
rrr:=rr;
for i:=1 to 32 do
begin
for z:=1 to Length(Memo1.Text) do
if memo1.lines.Text[z]=massiv[j] then inc(povtor[j]);
end;
for j:=1 to 32 do
begin
apr[j]:=(povtor[j])/rrr;
Stringgrid1.Cells[0,j]:=massiv[j];
Stringgrid1.Cells[1,j]:=inttostr(povtor[j]);
Stringgrid1.Cells[2,j]:=floattostr(apr[j]);
end;
for j:=1 to 32 do
for k:=1 to 32 do
for z:=1 to Length(Memo1.Text) do
begin
massiv2[k]:=massiv[k];
if memo1.lines.Text[z]+memo1.lines.Text[z+1]=massiv[j]+massiv2[k]
 then massiv3[j,k]:=massiv3[j,k]+1;
stringgrid2.cells[j,k]:=inttostr(massiv3[j,k]);
massiv4[j,k]:=massiv3[j,k]/rr;
stringgrid3.cells[j,k]:=floattostr(massiv4[j,k]);
end;
end;
end.
phomm: при клике на Go1 ошибка в выделенной строке

Последний раз редактировалось deathz0r; 09.03.2011 в 22:12.
deathz0r вне форума Ответить с цитированием
Старый 09.03.2011, 20:17   #14
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

pwian почему это Вы так решили ? вот работающий код, кописаста из дельфи, после успешной компиляции и проверки того, что мемо заполняется всеми буквами русского алфавита (вот неожиданность-то) :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i : char;
j : byte;
mas : array [1..32] of char;
begin
for i := 'а' to 'я'
do mas[ord(i)-223] := i;
for j := low(mas) to high(mas)
do memo1.Lines.Add(mas[j]);
end;
deathz0r используй тег code , или заходи в расширенный режим правки и жми кнопочку #

твой код не смотрел, ибо "правильно поставленный вопрос..." - народная мудрость

Последний раз редактировалось phomm; 09.03.2011 в 20:31.
phomm вне форума Ответить с цитированием
Старый 09.03.2011, 22:52   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

вам уже сказали причину
Цитата:
Просто параметр цикла i объявлен где-то в другом месте и для процедуры, где используется, является глобальной переменной... Сообщение же гласит, что используемый параметр цикла должен быть ЛОКАЛЬНОЙ переменной, т.е. описан в разделе описаний данной процедуры...
Код:
var
  Form1: TForm1;
  F:textfile;
  s:string;
  sp:string;
  r:extended;
  rr:extended;
  j:integer;
  massiv:array[1..32] of string;
  massiv2:array[1..32] of string;
  massiv3:array[1..32,1..32] of integer;
  massiv4:array[1..32,1..32] of extended;
  povtor:array[1..32] of integer;
implementation
Код:
for j:=1 to 32 do
begin
apr[j]:=(povtor[j])/rrr;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.03.2011, 08:46   #16
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Я свой пример оформлял естественно с локальной переменной, о чем говорит код в моём посте, у ТС она, конечно, глобальная, но у меня-то ведь она даже специально объявлена, как char, значит не имеет отношения к той глобальной переменной, которая другого типа. Как иначе можно понять мой код при данном раскладе? Однако, ещё замечу, что использование глобальной переменной для for не есть ошибка, интепретатор только выдаст ворнинг.
phomm вне форума Ответить с цитированием
Старый 12.03.2011, 13:07   #17
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

переменную j объявил как локальную, пишет что переменная j не может быть инициализирована
deathz0r вне форума Ответить с цитированием
Старый 12.03.2011, 14:30   #18
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

архивируй проект и прикрепляй, разберемся
phomm вне форума Ответить с цитированием
Старый 12.03.2011, 17:53   #19
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию

прикрепил.
Вложения
Тип файла: rar Planet.rar (398.9 Кб, 7 просмотров)
deathz0r вне форума Ответить с цитированием
Старый 12.03.2011, 19:48   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
Код:
for i:=1 to 32 do
begin
for z:=1 to Length(Memo1.Text) do
if memo1.lines.Text[z]=massiv[j] then inc(povtor[j]);
end;
[Warning] Unit1.pas(168): Variable 'j' might not have been initialized
Где в приведенном коде ЗАДАНО значение (присвоено) переменной j
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.03.2011 в 19:53.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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