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

> Прочтите прежде чем задавать вопрос!

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

 
 Ответить  Открыть новую тему 
> Двоично-десятичная форма, перевести в двоично-десятичную форму
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Помогите пожалуйста!
Я даже толком не поняла задание но оно звучит так:
Исходная информация: натуральное число записано в виде строки десятичных цифр(можно предполагать, что оно размещается в формате longint).
Задание: перевести это число в двоично-десятичную форму и вывести в виде строки(каждый соответствует двум десятичным цифрам).
Подскажите пожалуйста я буду вам очень благодарна! Заранее спасибо! huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


двоично десятичная форма это когда в байт записывают две десятичные цифры ::
биты 0..3 -- одна цифра
биты 4..7 -- вторая


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Perl. Just code it!
******

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

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


Вероника, такие задачи уже решались, пользуйтесь поиском, + загляните в FAQ Системы счисления : http://forum.pascal.net.ru/index.php?showtopic=4535


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Это очень хорошо что вы мне объяснили что такое двоично-десятичная с\с но вы бы не могли сказать что - нибудь по моей задаче! Volvo мне всегда отвечал на мой вопрос конкретным ответом! Подскажите мне пожалуйста я не понимаю этот паскаль!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Вероника, не совсем понятно, что именно тебе нужно получить... Как вариант могу привести функцию, получающую число (LongInt), и возвращающую визуальное представление BCD-числа, т.е. то, как выглядят сами биты этого двоично-десятичного числа:

function get_bcd_visual(n: longint): string;
const
quart: array['0' .. '9'] of string[4] =
('0000', '0001', '0010', '0011', '0100',
'0101', '0110', '0111', '1000', '1001');
delim: array[boolean] of string = ('', ' ');
var
s: string;
b: boolean;
begin
s := ''; b := true;
while n > 0 do begin
s := quart[chr(48 + (n mod 10))] + delim[b] + s;
n := n div 10; b := not b;
end;
if not b then s := quart['0'] + s;
get_bcd_visual := s;
end;

begin
writeln( get_bcd_visual(12345) );
end.

Если нужно получить само BCD-число, то непонятно, как будет определяться правильность работы программы, т.к. упакованное число 23, например, будет выглядеть как символ с кодом 35, т.е. "#"
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Спасибо котик буду надеяться что это именно то что мне нужно! Спасибо ты меня так выручаешь! Завтро сдам задачу и обязательно скажу так это или нет!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Помогите решить задачу всё на ту же тему но усложнённую!
Исход. информация: Строка символов.
Задача: проверить может ли эта строка быть проинтерпретирована как натуральное число, записанное в двоично-десятичной форме и если может, вывести это число(можно предполагать что оно размещается в формате longint)
Заранее благодарю!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Еще раз повторяю вопрос: КАК именно задана строка? Приведи пример исходной строки, когда ответ на вопрос будет положительный, и когда - отрицательный?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


sad.gif sad.gif sad.gif я не знаю примера это задание дано на листочке без объяснения! sad.gif
Может у тебя как и в прошлый раз есть какие-то предположения unsure.gif

Сообщение отредактировано: Вероника -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Так что Котик без примера не как???

Сообщение отредактировано: Вероника -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Привет ещё раз котик помнишь ту задачу которую ты мне помог сделать я её сдала и хотела тебя за неё поблагодарить и прошу тебя помоч мне её дорешать!!!
Вобщем надо то число которое получилось в двоично-десятичной с\с перевести в 16-ричную записать код ASCII который соответствует этому числу и записать символ который соответствует этому коду!!!
Пример 1234=0001010 00110100 т.е 12=0001010=...(в 16 ричной)=это число соответствует коду ASCII а этот код=какой-то символ. Тоже самое с 34.
Вобщем в конце должно получиться 2 символа.
Прости что так загрузила но вроде всё объяснила как смогла.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






{ Это - та функция, которую я делал раньше }
function get_bcd_visual(n: longint): string;
const
quart: array['0' .. '9'] of string[4] =
('0000', '0001', '0010', '0011', '0100',
'0101', '0110', '0111', '1000', '1001');
delim: array[boolean] of string = ('', ' ');
var
s: string;
b: boolean;
begin
s := ''; b := true;
while n > 0 do begin
s := quart[chr(48 + (n mod 10))] + {delim[b] +} s;
n := n div 10; b := not b;
end;
if not b then s := quart['0'] + s;
get_bcd_visual := s;
end;

{ А вот это - то, что ты просила в предыдущем посте: }
function get_bcd(s: string): string;
const
h_b: array[0 .. $F] of string[4] =
('0000', '0001', '0010', '0011',
'0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011',
'1100', '1101', '1110', '1111');
var
T, st: string;
i, count, code: byte;
begin
st := '';
while (length(s) mod 8) <> 0 do s := '0' + s;
repeat
code := 0;
for count := 1 to 2 do begin
T := copy(s, 1, 4); delete(s, 1, 4);
for i := 0 to $F do
if h_b[i] = T then inc(code, i * (16 + (1 - Count)*15));
end;
st := st + chr(code);
until s = '';
get_bcd := st;
end;

begin
writeln( get_bcd(get_bcd_visual(1234)) );
end.

Но опять же, учти, что в результате преобразования, например числа "1234" по тому алгоритму, что ты привела, получатся непечатаемые символы, и ты просто можешь чего-то не увидеть на экране, хотя сам результат преобразования будет правильным...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Котя я тебя обажаю ты лучший Спасибо тебе большое!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский
Реальное имя: Вероника

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


Вот вопросик ещё в 1- ой программе было delim[b] а во второй {delim[b]}-как коментарий! Как же правильно???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Если ты используешь ТОЛЬКО первую подпрограмму(get_visual_bcd), то раскомментируй delim[b] (она предназначена для более красивого представления результата, конкретнее - для вставки пробела после каждого восьмого символа строки).

Если же ты попытаешься использовать delim[b] и передать результат в функцию get_bcd (как и было сделано в посте №12), то получишь неизвестно что, т.к. строка будет содержать пробелы, которых там по алгоритму быть не должно... Поэтому при использовании get_bcd я и закомментировал этот кусок...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 12:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name