Вопрос № 108988: Здравствуйте! В принцыпе в переходе от HEX к BIN все понятно! Вот не пойму для чего в селекторе вы указывали (вместе с ord) цифры 48, 55 и 87! Напишыте пожалуйста!
case ord(c16[i]) of
48..57: c2:=c2+masBin[ord(c16[i])-48]; //для 0..9<b...Вопрос № 109115: Уважаемые знатоки, помогите, пожалуйста, с такой задачкой: элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Соседними элементами А (i,j) в матрице называются элементы А (k,l), где i-1<=k<=i+1,...
Вопрос
№ 108.988
Здравствуйте! В принцыпе в переходе от HEX к BIN все понятно! Вот не пойму для чего в селекторе вы указывали (вместе с ord) цифры 48, 55 и 87! Напишыте пожалуйста!
case ord(c16[i]) of
48..57: c2:=c2+masBin[ord(c16[i])-48]; //для 0..9
65..70: c2:=c2+masBin[ord(c16[i])-55]; //для A..F
97..102: c2:=c2+masBin[ord(c16[i])-87]; //для a..f
Отправлен: 12.11.2007, 00:45
Вопрос задал: БАБУИН (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Gh0stik
Здравствуйте, Мироненко Николай Николаевич!
Поскольку число в 16-ичной система счисления моет состоять из символов {0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} либо {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}, а обращаться к элементу массива нужно только по ЦЕЛОЧИСЛЕННОМУ индексу, то приходится изначально символ переводить в его код с помощью функции ORD.
Код символа 'A' равен 55, символа 'a' равен 97, а символа '0' - 48. Получаем что при значениях c16[i] равных от '0' до '9' будем обращаться к таким элементам
массива: masBin[ord('0')-48] = masBin[0] masBin[ord('1')-48] = masBin[1] masBin[ord('2')-48] = masBin[2] masBin[ord('3')-48] = masBin[3] masBin[ord('4')-48] = masBin[4] masBin[ord('5')-48] = masBin[5] masBin[ord('6')-48] = masBin[6] masBin[ord('7')-48] = masBin[7] masBin[ord('8')-48] = masBin[8] masBin[ord('9')-48] = masBin[9]
Аналогично рассмотрим диапазоны и для букв. от 'A' до 'F' masBin[ord('A'
)-48] = masBin[10] masBin[ord('B')-48] = masBin[11] masBin[ord('C')-48] = masBin[12] masBin[ord('D')-48] = masBin[13] masBin[ord('E')-48] = masBin[14] masBin[ord('F')-48] = masBin[15]
Вот такая арифметика, и немного смекалки для компактного решения
поставленной задачи ;).
Возможно более понятно для этой же задачи будет запись выше описанного кода в таком виде: case c16[i] of '0'..'9': c2:=c2 + masBin[ord(c16[i]) - Ord('0')]; 'A'..'F': c2:=c2 + masBin[ord(c16[i]) - Ord('A')+10]; 'a'..'f': c2:=c2 + masBin[ord(c16[i]) - Ord('a')+10];
Где +10 - "поправка на ветер", поскольку в массиве соответствующие знач
ения для букв начинаются с элемента с индексом 10.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 12.11.2007, 01:18 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо за обьяснение! Теперь понял где беруться эти цифры!
Отвечает: Стома С.С. !!! Здравствуйте, Мироненко Николай Николаевич!
В DOSе и в Windows существует кодировка которая называется ANSI. Разновидность набора ANSI, содержащая символы русского алфавита, называется Windows-1251. цифры 0..9 хранятся в компьютере как числа 48..57 буквы A..F 65..70 и нижний регистр соответственно догадались ord - это операция с порядковыми типами которая возвращает его порядковый номер
Ответ отправил: Стома С.С. (статус: 2-ой класс)
Ответ отправлен: 12.11.2007, 01:26 Оценка за ответ: 4 Комментарий оценки: Спасибо!!!
Вопрос № 109.115
Уважаемые знатоки, помогите, пожалуйста, с такой задачкой: элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Соседними элементами А (i,j) в матрице называются элементы А (k,l), где i-1<=k<=i+1, j-1<=l<=j+1, (k,l)<>(i,j). 1.Подсчитать количество локальных минимумов заданной матрицы размером 10*10(оформить в виде процедуры). 2. Найти сумму модулейэлементов, расположенныхвыше главной диагонали (оформить в виде функции). Помогите, пожалуйста, а
то я даже не знаю с чего начать.
Отвечает: Verena
Здравствуйте, Cмирнова Наталья Викторовна!
По поводу первой части. "Соседей" будем оббегать в дополнительном цикле и сравнивать с текущим элементом. По поводу второй - индексы элементов над главной диагональю соотносятся как j < i (на самой диагонали i=j). Только следует учитывать, что смысл это имеет только для квадратной матрицы. Решение в приложении.
Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 12.11.2007, 21:36