Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ перевод дробного числа из 10-ой системы счисления

Автор: lizard 22.10.2006 22:36

Видел примерно такую же в Delphi но в паскале не видел плз хэлп!
Задача вот:

Написать программу по переводу дробного числа из 10-ой системы счисления в N систему счисления (N<10)

мне б это к 25.10.2006 надо бы




ещё раз ПЛЗЗ ХЭЛП

Автор: klem4 22.10.2006 22:43

Цитата
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...

Цитата
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!



Автор: SuperMozg 23.10.2006 2:13

const
precision = 20; {точность (кол-во знаков)}
type
Massiv = array[1..precision] of integer;
Osnov = 2..9;
var
num: double; {число в десятичной системе}
osn: Osnov; {основание}

TruncMas,
FracMas: Massiv; {массивы для целой и дробной частей}

count: integer; {кол-во цифр в целой части}
i: integer;

{переводит целую часть и возвращает ответ в виде массива}
procedure TruncConvert(n10:longint; osn: Osnov;
var TruncMas: Massiv; var count: integer);
begin
count:= 0;
repeat
Inc(count);
TruncMas[count]:= n10 mod osn;
n10:= n10 div osn;
until n10 = 0;
end;

{переводит дробную часть}
procedure FracConvert(n10: double; osn: Osnov;
var FracMas: Massiv);
var
i: integer;
begin
for i:= 1 to precision do
begin
FracMas[i]:= Trunc(n10*osn);
n10:= Frac(n10*osn)
end;
end;


begin
WriteLn('Vvedite chislo i osnovanie:');
ReadLn(num, osn);
TruncConvert(Trunc(num), osn, TruncMas, count);
FracConvert(Frac(num), osn, FracMas);
WriteLn('Chislo v sisteme s osnovaniem ', osn, ':');
for i:= count downto 1 do
Write(TruncMas[i]);
Write ('.');
for i:= 1 to precision do
Write(FracMas[i]);
ReadLn;
end.