Выпуск № 911 от 16.06.2009, 11:35
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 339, экспертов - 150
В номере: вопросов - 3, ответов - 4
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 169236: Здравствуйте. Требуется решение следующей задачи: Строку – двоичное представление целого числа, преобразуйте в строку – 16-ичное представление этого числа Заранее спасибо!...
Вопрос № 169238: Здравствуйте. Помогите решить: Сформировать двумерный массив G размером 3X9 (3 количество строк, 9 - количество столбцов) с помощью генератора случайных чисел и вывести элементы массива нв экран и в файл. Записать в одномерный массив F ...
Вопрос № 169239: Здравствуйте. Требуется решение следующей задачи: Строку – двоичное представление целого числа, преобразуйте в строку – 16-ичное представление этого числа Заранее спасибо!...
Вопрос № 169236:
Здравствуйте. Требуется решение следующей задачи:
Строку – двоичное представление целого числа, преобразуйте в строку – 16-ичное представление этого числа
Заранее спасибо!
Отправлен: 10.06.2009, 12:22
Вопрос задал: megakompinfo
Всего ответов: 1 Страница вопроса >>
Отвечает _Ayl_, 5-й класс :
Здравствуйте, megakompinfo!
Решение в приложении
Приложение:
Ответ отправил: _Ayl_, 5-й класс
Ответ отправлен: 10.06.2009, 13:31
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250760
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 169238:
Здравствуйте.
Помогите решить:
Сформировать двумерный массив G размером 3X9 (3 количество строк, 9 - количество столбцов) с помощью генератора случайных чисел и вывести элементы массива нв экран и в файл. Записать в одномерный массив F строку матрицы G, содержащую минимальный элемент (оформить нахождение минимального элемента в виде процедуры). Вывести элементы массива F на экран и в файл.
Заранее спасибо!
Отправлен: 10.06.2009, 12:39
Вопрос задал: jokerjoke
Всего ответов: 1 Страница вопроса >>
Отвечает _Ayl_, 5-й класс :
Здравствуйте, jokerjoke.
Решение в приложении
Добавлено из мини-форума: У меня BP 7.1 Там это расширение есть openstring - это открытая строка. Появилась в 7-й версии Borland Pascal.
Код:
Открытые строковые параметры
Открытые
строковые параметры могут описываться двумя способами:
* с помощью идентификатора OpenString; * с помощью ключевого слова string в состоянии {$P+}.
Идентификатор OpenString описывается в модуле System. Он обозначает специальный строковый тип, который может использоваться только в описании строковых параметров. В целях обратной совместимости OpenString не является зарезервированным словом и может, таким образом, быть переопределен как идентифика
тор, заданный пользователем.
Когда обратная совместимость значения не имеет, для изменения смысла ключевого слова string можно использовать директиву компилятора {$P+}. В состоянии {$P+} переменная, описанная с ключевым словом string, является открытым строковым параметром.
Для открытого строкового параметра фактический параметр может быть переменной любого строкового типа. В процедуре или функции атрибут размера (максимальная длина) формального параметра будет тем же, что у фактического параметра.
Открытые
строковые параметры ведут себя также как параметры-переменные строкового типа, только их нельзя передавать как обычные переменные другим процедурам или функциям. Однако, их можно снова передать как открытые строковые параметры.
В следующем примере параметр S процедуры AssignStr - это открытый строковый параметр:
procedure AssignStr(var S: OpenString); begin S := '0123456789ABCDEF'; end;
Так ка
к S - это открытый строковый параметр, AssignStr можно передавать переменные любого строкового типа: var S1: string[10]; S1: string[20]; begin AssignStr(S1); AssignStr(S2); { S1 := '0123456789' } { S2 := '0123456789ABCDEF' } end;
В AssingStr максимальная длина параметра S та же самая, что у фактического параметра. Таким образом, в первом вызове AssingStr при присваивании параметра S строка усекается, так как максимальная длина S1 равна 10.
При
применении к открытому строковому параметру стандартная функция Low возвращает 0, стандартная функция High возвращает описанную максимальную длину фактического параметра, а функция SizeOf возвращает размер фактического параметра.
В следующем примере процедура FillString заполняет строку заданным символом до ее максимальной длины. Обратите внимание на использование функции High для получения максимальной длины открытого строкового параметра. procedure
FillStr(var S: OpenString; Ch: Char); begin S[0] := Chr(High(S)); FillChar(S[1], High(S), Ch); { задает длину строки } { устанавливает число символов } end;
Значения и параметры-константы, описанные с использованием идентификатора OpenString или ключевого слова string в состоянии {$P+}, не являются открытыми строковыми параметрами. Они ведут себя также, как если бы были описаны с максимальной длиной строкового типа 255, а функция Hingh для таких параметров всегда возвращает 255.
Дополнено из мини-форума.
-----
∙ Отредактировал: Николай Владимирович / Н.В., Старший модератор
∙ Дата редактирования: 10.06.2009, 17:51 (время московское)
Приложение:
Ответ отправил: _Ayl_, 5-й класс
Ответ отправлен: 10.06.2009, 14:30
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250763
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 169239:
Здравствуйте. Требуется решение следующей задачи:
Строку – двоичное представление целого числа, преобразуйте в строку – 16-ичное представление этого числа
type {* Класс-конвертер *} TBinary2HexConverter=object str:String; function NumConvert(b: String): Char; public constructor Init(s: String); function ToHex: String; end;
{* Конструктор
*} constructor TBinary2HexConverter.Init(s: String); var i: Integer; skipZeroes:Boolean; begin str:=''; {* Флаг сигнализирующий, что ведущие нули еще не пропущены *} skipZeroes:=true; for i := 1 to Length(s) do begin {* Проверка на корректность строки *} if not (s[i] in ['0','1']) then begin Fail; end; {* Если не ноль или ведущие нули уже пропущены *} if not(skipZeroes and (s[i]=&
#39;0') and (i<>Length(s))) then begin skipZeroes:=false; str:=str+s[i]; end; end; end;
{* конвертирует 4х битовую двоичную строку в шестнадцатиричное число *} function TBinary2HexConverter.NumConvert(b: String): Char; const hexdigits:array[0..15] of char='0123456789ABCDEF'; var num:Integer; i: Integer; begin num:=0; for i := 1 to Length(b) do begin num:=(num shl 1) + (Ord(b[i]) - Ord('0')); end; NumConvert:=hexdigits[num]; end;
{*
Собственно сам конвертер *} function TBinary2HexConverter.ToHex: String; var cur,len:Integer; res:String; begin res:=''; cur:=1; while cur<=Length(str) do begin len:=(Length(str)-cur) mod 4+1; res:=res+ NumConvert(Copy(str,cur,len)); Inc(cur,len); end; ToHex:=res; end;
var s:String; bin:TBinary2HexConverter;
begin Write('Enter binary number:
39;); ReadLn(s); if bin.Init(s) then begin WriteLn('In Hex:',bin.ToHex); end else begin WriteLn('This is not binary number'); end; ReadLn; end.
Пример:
Код:
Enter binary number:1001010101011011 In Hex:955B
Ответ отправил: Micren, Практикант
Ответ отправлен: 10.06.2009, 14:41
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250764
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.