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

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

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

> Как обойти 10 систему при переводе?, ...при переводе из 2-ой в 16-ю систему?
Atomyc
сообщение 28.11.2007 13:29
Сообщение #1





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

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


Help, I need somebody,
Help, not just anybody,
Help, you know I need someone, help.

А точнее по русски: Помогите пожалуйста, задача такая,Нужно перевести дробные числа из двоичной системы в шеснадцатиричную.я Я кое как написал прогу,работает,всё считает правильно, а училка говорит что это мараз через 10 переводить,и надо было по другому делать,я у неё спрашиваю,ну объясните мне тогда как?!Она мне сказала что я должен это сам знать.

Подскажите алгоритм перевода минуя 10-ю систему,и помоги переделать прогу.

uses crt;
var
n, int_part, fraq_part: string;
s: longint;
q: real;
_result: real;
h, r, eps, i: integer;
x, p: real;
otv, rev: string;
begin
clrscr;
Writeln ('Vvedite chislo v 2-oi sisteme');
readln(n);
int_part := copy(n, 1, pos('.', n) - 1); {отделяем целую часть двоичного числа}
fraq_part := copy(n, pos('.', n) + 1, 255); {отделяем дробную часть числа}

_result := 0.0;

s := 1;
while int_part <> '' do begin
_result := _result + (ord(int_part[length(int_part)]) - ord('0')) * s;
delete(int_part, length(int_part), 1);
s := s * 2;
end;

writeln(_result:10:5);

q := 1 / 2;
while fraq_part <> '' do begin
_result := _result + (ord(fraq_part[1]) - ord('0')) * q;
delete(fraq_part, 1, 1);
q := q / 2;
end;

writeln('Promezhytochi rezyltat =',_result:10:5);
x:=_result;
h:= trunc(x); {находим целую часть}
p:= x-h; {находим дробную часть}
repeat
r:= h mod 16; {сохраняем остаток}
h:= h div 16; {оставляем только целую часть}
if r<10 then otv:= otv + chr (r+48) {код цифры в ascii таблице равен самой цифре +48}
else otv:= otv+chr (r+55); {шаг до буквы А от 10 = 55}
until h<=0;
for i:=1 to length(otv) do rev:= rev+otv[length(otv)-i+1]; {записываем остатки задом наперёд}
otv:= rev;
eps:=0; {точность дробной части}
otv:= otv+'.';
repeat
r:= trunc (p*16); {берём целую часть}
p:= p*16-r; {оставляем только дробную}
if r<10 then otv:= otv+chr (r+48)
else otv:= otv+chr (r+55);
inc (eps);
until (p=0) or (eps>10);
writeln ('Chislo v 16 sisteme = ',otv);
Readln;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 19.07.2025 14:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"