![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
FCT-Miasnik_YK |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Юрий Репутация: ![]() ![]() ![]() |
Задача!!!
Исходная информация: целое число, записанное в виде строки шестнадцатеричных цифр, которой может предшестововать знак. Задание: записать это число в дополнительном коде в виде строки шестнадцатеричных цифр. Примечание: можно считать, что первая цифра исходного числа не превосходит 7. пожалуйста, помогите! Я решил остальные задачи по Лабе, но с этой очень большие проблемы! Я окончательно запутался! Хелп помогите мне выкрутится!!! Буду всем очень благодарен, надеюсь не кто меня не посчитает халявщиком и тем кто не хочет учиться !:!help: |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
var
n: string;
L: word;
begin
n := '75F';
writeln(fromdec( not(word(todec(n, 16))) + $1, 16 ));
end.
Реализация FromDec/ToDec - здесь: FAQ: Общие вопросы по математике Этот код будет работать со строками длиной до 4-х символов... |
Atos |
![]()
Сообщение
#3
|
![]() Прогрессор ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 602 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Один из способов:
Цитата Переписываем исходную последовательность битов числа справа налево до первой единицы, включая ее. Остальные биты заменяем их дополнениями (инвертируем). Читаем строку справа налева. Если очередной символ '0', то ничего с ним не делаем. Иначе применяем к этому символу функцию FirstOne {вообще-то удобнее былобы её процедурой сделать, ну да ладно...} и затем ко всем ещё непрочитанным символам строки применяем функцию InvertHex. Это всё для положительного числа. Для отрицательного легче: просто убрать минус, а к первому слева символу применить операцию Plus8 (этим самым заменяя старший бит с нуля на единицу) Код function InvertHex(ch:char):char; begin case ch of '0': InvertHex:='F'; '1': InvertHex:='E'; '2': InvertHex:='D'; '3': InvertHex:='C'; '4': InvertHex:='B'; '5': InvertHex:='A'; '6': InvertHex:='9'; '7': InvertHex:='8'; '8': InvertHex:='7'; '9': InvertHex:='6'; 'A': InvertHex:='5'; 'B': InvertHex:='4'; 'C': InvertHex:='3'; 'D': InvertHex:='2'; 'E': InvertHex:='1'; 'F': InvertHex:='0'; end; end; function FirstOne(ch:char):char; begin case ch of '1': FirstOne:='F'; '2': FirstOne:='E'; '3': FirstOne:='D'; '4': FirstOne:='C'; '5': FirstOne:='B'; '6': FirstOne:='A'; '7': FirstOne:='9'; '8': FirstOne:='8'; '9': FirstOne:='7'; 'A': FirstOne:='6'; 'B': FirstOne:='5'; 'C': FirstOne:='4'; 'D': FirstOne:='3'; 'E': FirstOne:='2'; 'F': FirstOne:='1'; end; end; function Plus8(ch:char):char; begin case ch of '0': Plus8:='8'; '1': Plus8:='9'; '2': Plus8:='A'; '3': Plus8:='B'; '4': Plus8:='C'; '5': Plus8:='D'; '6': Plus8:='E'; '7': Plus8:='F'; end; end; {когда писал, ещё не видел ответа volvo ![]() Сообщение отредактировано: Atos - 5.10.2006 11:17 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Atos, в принципе, если работать со строками - то решение будет еще проще, чем ты думал:
const
digit: string[16]='0123456789ABCDEF';
var
n, s: string;
i, p, shift: integer;
begin
n := '1275F0'; s := '';
shift := 1;
for i := length(n) downto 1 do begin
p := succ(16 - pos(n[i], digit)) + shift;
if p > 16 then begin
dec(p, 16); shift := 1
end
else shift := 0;
s := digit[p] + s;
end;
writeln(s);
end.
|
FCT-Miasnik_YK |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Юрий Репутация: ![]() ![]() ![]() |
всем спасибо, волво прости за тему на другом форуме...
|
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 10:50 |