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

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

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

> Как обойти 10 систему при переводе?, ...при переводе из 2-ой в 16-ю систему?
сообщение
Сообщение #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

 





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