![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 08.05.2013
Сообщений: 2
|
![]()
Не могу разобраться с участком кода, а именно:
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. Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Мне кажется, Вы подходите не с того конца.
Первое, что нужно делать при анализе кода, - понять, для чего он нужен. Какую работу он должен выполнять, какую задачу решать. Без этого ковыряться в коде - дохлый номер. Вас что интересует: - как работает данный код? - как он должен работать? По поводу конкретных моментов: - если числу присваивается величина, превосходящая максимально допустимое значение, число усекается (отбрасываются старшие разряды). Фактически работа программы в этом случае зависит от настроек компилятора. В частности, программа может выдавать ошибку. - если происходит выход за пределы массива, то используются ячейки памяти, расположенные за этим массивом. Например, другой массив. Работа в этом режиме также зависит как от конкретного компилятора, так и от его настроек. В частности, программа может выдавать ошибку. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 08.05.2013
Сообщений: 2
|
![]()
Участок кода я взял на сайте http://www.beluch.ru/progr/algkres.htm , там представлен алгоритм игры крестики нолики, вот я и пытаюсь понять как этот алгоритм работает, кстати там к элементу массива Ray прибавляют не только число 1000, но и 10000 и 100000.
Элементам массива Ray после расчета присваиваются рейтинги клеток поля в виде значений 0, 1, 10, 100, 1000, 10000, 100000, 1000000. Согласитесь, не логично к байтовой переменной прибавлять число 1000000, так что скорее всего прибавляются двоичные числа, то есть 0, 1, 2, 4, 8, 16, 32, 64, 128. Правильно ли я понимаю что переменная jj инкрементируется от 0 до 255? Если это так, каким образом происходит присваивание sj:=lin[s11[jj],jjj], ведь массив s11 состоит только из 4 элементов... Посмотрим на данный участок кода, получается что выделенная синим цветом конструкция выполняется 256 раз? Код:
|
![]() |
![]() |
![]() |
#4 | |||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
А можете ли поручиться, что автор сего опуса не был уверен в том, что вводит в текст программы двоичные числа? Цитата:
Пусть это автор объясняет, что именно он имел в виду. Цитата:
Лучше сами попытайтесь что-нибудь написать. Хотя бы те же крестики-нолики. |
|||
![]() |
![]() |
![]() |
#5 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемный участок кода | 3StYleR | Общие вопросы C/C++ | 1 | 06.10.2012 21:45 |
Не выполняется участок кода | NiKiToZZ- | Общие вопросы Delphi | 10 | 25.02.2012 00:29 |
участок кода с оператором for | tema1234321 | Помощь студентам | 3 | 27.12.2011 00:14 |