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

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

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

Автор: Claymore 28.11.2007 1:38

Нужна помощь, прога нужна к завтрашнему. Заранее спасибо.

Автор: Client 28.11.2007 1:56

Цитата
Нужна помощь, прога нужна к завтрашнему

Всетаки, помощь или прога?

Автор: Claymore 28.11.2007 1:57

Цитата(Client @ 27.11.2007 21:56) *

Всетаки, помощь или прога?

скорее прога, т.к. моя прога очень кривая и считает с очень большой погрешностью.

Автор: Malice 28.11.2007 2:00

чем не устроила та, что в faq ?

Автор: Claymore 28.11.2007 2:05

Цитата(Malice @ 27.11.2007 22:00) *

чем не устроила та, что в faq ?

чёта не нашел там sad.gif

Автор: Client 28.11.2007 2:10

Цитата
т.к. моя прога очень кривая и считает с очень большой погрешностью.

Покажи что сделал

Автор: Claymore 28.11.2007 2:16

program abc;
var
x,y,z,k,s1,s2,s:real;
i,j,a,b,c:integer;
m:array[1..100] of integer;
n:array[1..100] of integer;
begin
writeln('Vvedite 4islo v troi4noi sisteme s4islenia');
readln(x);
y:=trunc(x);
while y>=10 do
begin
y:=y/10;
end;
z:=frac(x);
z:=z*100000;
z:=trunc(z);
while z>=10 do
begin
z:=z/10;
end;
if (round(y)>=10) then
m[1]:=1
else
m[1]:=round(y);
if (round(z)>=10) then
n[1]:=1
else
n[1]:=round(z);
a:=1;
b:=1;
for i:=2 to 100 do
begin
y:=frac(y);
y:=y*10;
if (round(y)=10) or (frac(y)=0) then break
else
m[i]:=round(y);
a:=a+1;
end;
for j:=2 to 100 do
begin
z:=frac(z);
z:=z*10;
if (round(z)=10) or (frac(z)=0) then break
else
n[j]:=round(z);
b:=b+1;
end;
c:=0;
s1:=0;
for i:=a downto 1 do
begin
k:=m[i]*EXP(©*LN(3));
s1:=s1+k;
c:=c+1;
end;
s2:=0;
c:=1;
for j:=1 to b do
begin
k:=n[j]*EXP((-c)*ln(3));
s2:=s2+k;
c:=c+1;
end;
s:=s1+s2;
writeln(s);
end.
.

Автор: Malice 28.11.2007 2:20

Цитата(Claymore @ 27.11.2007 22:05) *

чёта не нашел там sad.gif

http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=38226
функция ToDec(n:string; radix:longint):longint;
оно ? Только вводить надо строку, а не integer как у тебя.
ps Тока это для целыйх чисел ! Если дробное надо, то не пойдет..

Автор: Client 28.11.2007 2:23

число 201 в тричной это 19 в десятичной.Так?

Автор: Claymore 28.11.2007 2:27

Цитата(Client @ 27.11.2007 22:23) *

число 201 в тричной это 19 в десятичной.Так?

да, сложности начинаются если взять 4 знака числа, да и дробная часть ацтойная выходит.

Автор: Client 28.11.2007 12:53

Это только на целую часть


Прикрепленные файлы
Прикрепленный файл  PEREVOD.PAS ( 479 байт ) Кол-во скачиваний: 248

Автор: Гость 28.11.2007 13:12

Цитата
сложности начинаются если взять 4 знака числа, да и дробная часть ацтойная выходит.
А ты попроьуй, наконец, воспользоваться поиском... Выкладывалась программа (если не ошибаюсь, тема была про калькулятор), переводящая отдельно целую отдельно дробную части числа из одной системы счисления в другую...

А то писать одно и то же поднадоело, значшь ли уже...

Специально для Client: как ты думаешь, если зайти в поиск, сколько я найду там процедур/функций/программ перевода из одной системы в другую ("только для целой части")? 2? 3? А может 10? Я почему-то думаю, что одной сотней не обойдется... Не, если очень хочется написать то, что было сделано еще несколько лет назад (может, оно работать быстрее станет, или преподавателю переписанный текст больше понравится, другой причины - просто не вижу) то можно и написать еще несколько сотен вариантов... Переменные по-разному обозвать, например...