Показать сообщение отдельно
  #1  
Старый 03.01.2010, 16:54
ЭлЭрДжи ЭлЭрДжи вне форума
Прохожий
 
Регистрация: 03.01.2010
Сообщения: 4
Репутация: 10
По умолчанию Задача на типизированные файлы

Задача: найти в файле типа integer кол-во серий повторяющихся эл-тов.
Т.е. как я понимаю, он должен брать 2 числа, сравнивать, увеличивать кол-во серий если они равны и не переходить к следующему увеличению пока последующие символы также равны этому, т.е. длится одна серия. По видимому, код не работает уже при побайтовом чтении, помогите, плз

Код:
procedure TForm1.btn1Click(Sender: TObject);
var
  f:file of Integer;
  i,k,kolvo:Integer;
begin
  AssignFile(f, dlgOpen1.FileName);
  Reset(f);
  read(f,i);  //читаем 1й символ
  kolvo:=0;
  while not Eof(f) do      // до конца файла
  begin
    read(f,k); // читаем i+1 символ
    if i=k then 
    begin
      kolvo:=kolvo+1; //увеличиваем кол-во, если они равны
      repeat
        Read(f,i);   // записываем в i последующие эл-ты до конца серии
      until not(i=k);
    end
    else
    i:=k; //если не равны, присвоим i значение i+1 и цикл заново
  end;
  ShowMessage(IntToStr(kolvo));
end;



Тут проблема не в алгоритме, а в том, что я даже если вывожу элемент i куда нибудь, он мне выводит 859059252 с k также. Переменная kolvo нулевая. Может я неправильно по символам читаю?
Ответить с цитированием