Помощь - Поиск - Пользователи - Календарь
Полная версия: Непонятный участок кода
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
ruslan55x55
Не могу разобраться с участком кода, а именно:
1. Как к элементу массива Ray прибавляют число 1000, ведь тип элементов массива Ray это байты, а байт может иметь максимальное значение 255?

2. Переменная jj в цикле инкрементируется от 0 до 255, как же тогда присваивается значение переменной sj:=lin[s11[jj],jjj]? Переменной sj присваивается значение байта из массива lin, адрес этого байта - это строка s11[jj], и столбец jjj, Нестыковка именно со значением строки, значение строки это jj-й элемент массива s11, но в массиве s11 всего 4 элемента(байта), а переменная jj инкрементируется до 255.

Код

type
     position=array [1..9] of byte;

var
Kl : position;
Ray: position;
s00,s11,s44: array [0..3] of byte;
s0,s1,s4,ssj,ii,j,jj,jjj,sj: byte;

const
  lin : array[1..8,1..3] of byte =
        ((1,2,3),(4,5,6),(7,8,9),
         (1,4,7),(2,5,8),(3,6,9),
         (1,5,9),(3,5,7));
              
              begin
              s00[s0]:=ssj;
              inc(s0);
              for jj:=0 to s4-1 do
                for jjj:=1 to 3 do begin
                  sj:=lin[ssj,jjj];
                  if sj<>ii then Ray[sj]:=Ray[sj]+1000
                end
              for jj:=0 to s1-1 do begin
                for jjj:=1 to 3 do begin
                  sj:=lin[ssj,jjj];
                  Ray[sj]:=Ray[sj]+10;
                end
                for jjj:=1 to 3 do begin
                  sj:=lin[s11[jj],jjj];
                  if (sj<>ii)and(Kl[sj]=0) then
                      Ray[sj]:=Ray[sj]+10
                end
              end
             end;  
Федосеев Павел
Да-а-а...

Код фтопку!

P.S. Могу лишь предположить, что к тебе попал не целый исходник программы, а лишь её фрагмент. Отсюда и нестыковки. Раз уж ты пытаешься научиться - попробуй реализовать собственный вариант решения. Появятся вопросы по нему - задавай.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.