Помощь - Поиск - Пользователи - Календарь
Полная версия: Знаковое число-слово перевести в 16тиричную строку?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DiSkEtKa
В общем у меня задание такое: нужно перевести знаковое число типа word
в шестнадцатеричную строку.. Пожскажите пожалуйста как можно следить
за знаком(если отр число то переводить его абс. величину чтоли?), если нам дано
конекретное чило а, а не массив..я не могу никак додуматься.. unsure.gif


Код
program dva;
uses crt;
var a,i:byte;
    t:array[1..8] of word;
begin
    clrscr;
    writeln('vvedite a');
    readln(a);
    i:=1;
    repeat
            t[i]:=a mod 16 +65;
            a:=a div 16;
            i:=i+1
        until a=0;
        for i:=1 to 3 do
            write(t[i]);
end.
volvo
Цитата
знаковое число типа word
blink.gif blink.gif Что-то изменилось??? Word всегда был БЕЗзнаковым типом... Так что задача смысла не имеет, ты не можешь в Word (и в Byte, кстати, тоже) хранить отрицательное число... Любой компилятор выдаст тебе ошибку (если, конечно, ты не отключила контроль в настройках компилятора, но тут уж сама виновата)...
DiSkEtKa
В задании написано: знаковое число слово перевести в 16тиричную строку...Я думала, что слово значит, что тип word..как же бвть?? unsure.gif
klem4
Думаю ты не правильно поняла, тип Word как таковой тут не причем, на соклько я понял в твоем задании надо просто пересести слово, заданное восемью разрядами в hex.

то есть

0000 1111 = 0000 000F (15)

?

Если так, то FAQ : Системы счисления
DiSkEtKa
Klem4, наверное ты прав..сейчас почитаю эту ссылку..а что такое hex? unsure.gif
volvo
Hexadecimal (шестнадцатеричный формат)
DiSkEtKa
Но ведь мне чила нужно вводить в 10тичной системе счисления..?!?! unsure.gif
klem4
Ну и что ? Ты по ссылке ходила ? С помощью тех подпрограмм которые там есть, можно перевести число из одной сс в любую другую !

DiSkEtKa
А если число со знаком минус?Нужно использовать дополнительный код чтоли?
klem4
Так. Давай определимся. В каком формате тебе надо вводить число ? В виде строки вида '#### ####' или в виде целого знакового числа ? (Integer)
?
DiSkEtKa
в виде целого знакового числа unsure.gif
volvo
Ну, так в чем проблема?
var
n: integer;

begin
n := -15; { Или ReadLn(n) }
writeln( FromDec(Word(n), 16) );
end.


Можешь проверить с использованием калькулятора Windows...

Ссылку на FromDec klem4 уже дал...
DiSkEtKa
volvo, честно говоря не совсем поняла, что ты сделал, мне такое нельзя использовать, так как мы ещё не прошли этотFromDec.... Я разолбралась с заданием, вообщем мне нужно перевести знаковое чилсо( тип integer) в шестнадцатеричную строку...делаю, делаю, а уменя программа совес ничего не считает..подскажите пожалуйста, в чём проблема в моей мрограммке...

program nomer2;

var
a,i,n:integer;
t:array[1..7] of char;
F:boolean;
begin

writeln('vvedite chislo');
readln(a);
i:=0;
n:=7;
if a<0 then
begin
F:=TRUE;
a:=abs(a);
end;
i:=n;
while a<>0 do
begin
if a<=9 then
begin
t[i]:=chr(a mod 16+48);
a:=a div 16;
i:=i-1
end

if f=true then
writeln('-',a)
else writeln(a);
end.
volvo
Очень интересно...
chr(a mod 16+48);
, значит тебе можно использовать, а написать свою функцию - нельзя? Ну, тогда дорабатывай... Я велосипедостроением не занимаюсь. Если есть уже написанная и отлаженная функция, я предпочитаю использовать ее. А не используешь - зачем Паскаль учишь? Учи Бейсик, там тоже преподаватели предпочитают чтоб всё без функций было сделано nea.gif
DiSkEtKa
Цитата
Если есть уже написанная и отлаженная функция, я предпочитаю использовать ее. А не используешь - зачем Паскаль учишь?


Всё равно спасибо..сейчас попробую так как ты сказал сделать
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.