IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Непонятный участок кода
ruslan55x55
сообщение 7.05.2013 21:08
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Не могу разобраться с участком кода, а именно:
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;  
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 11.05.2013 21:32
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


Да-а-а...

Код фтопку!

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

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 5.11.2024 3:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"