Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Индексы Паскаля

41K
22 января 2014 года
dimaboyko
3 / / 19.07.2009
Помогите исправить ошибку в коде Паскаля (Выход индекса за пределы массива).
Код:
var fi, fo: text;
    s: string;
    a: array [-2..1100] of Integer;
    b: array [1..1110] of string;
    i, j, m, n, c: Integer;

procedure Out; {процедура вывода текущего сочетания из слов строки}
 var i: Integer;
 begin
  Write(fo, ' ');
  for i := 1 to n do Write(fo, b[a[i]]);
  WriteLn(fo)
 end;
 
begin
 Write(' Из скольких элементов задать сочетания: n = '); ReadLn(n);
 Assign(fi, 'input.txt'); Reset(fi);
 Assign(fo, 'output.txt'); ReWrite(fo);
 s := ' ';
 While not EoF(fi) do
  begin
   Readln(fi, s);
   while s[1] = ' ' do delete(s, 1, 1);
   while Pos('  ', s) > 0 do delete(s, Pos(' ', s), 1);
   while s[Length(s)] = ' ' do delete(s, Length(s), 1);
   s := s + ' ';
   m:=0;
   repeat
    Inc(m);
    b[m] := Copy(s, 1, Pos(' ', s));
    Delete(s, 1, Pos(' ', s));
   until s = '';
   
   for i := 1 to n do
    a[i] := i;
    c := 0;
    repeat
     Out;
     i := n;
     while (a[i] = m - n + i) do
      dec(i); {поиск элемента для изменения}
      inc(a[i]);
      for j := i + 1 to n do
       a[j] := a[j - 1] + 1; {изменение правой части сочетания}
    until i = 0;
    inc(c);
  end;
 Close(fi); Close(fo);
 Writeln('   Выполнено');
 Readln
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог