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

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

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

 
 Ответить  Открыть новую тему 
> Перевод числа из десятичной с.с. в троичную уравновешенную
сообщение
Сообщение #1





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

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


Люди подскажите пожалуйста алгоритм перевода целого числа из десятичной с.с. в троичную уравновешенную. и что это за система такая троичная уравновешенная? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






... Еще одна разновидность позиционных нумераций - уравновешенные системы счисления. В качестве примера рассмотрим так называемую троичную уравновешенную систему счисления. Ее алфавит состоит из трех (поэтому - "троичная"!) элементов:
A3={1, 0, 1},
где красный цвет использован для обозначения "минус 1". Присутствие такой "nega-единицы" в соответствующем разряде числа означает, что этот разряд учитывается со знаком "минус". Например:
1101(3)=((-1)*3^0+0*3^1+(-1)*3^2+1*3^3)(10)= 17(10)

Уравновешенная система счисления не является лишь "математическим фокусом". С ее помощью удобно представлять числа, соответствующие, в частности, использованию двухчашечных весов, на которых гири, для уравновешивания чашек, учитываются со знаками как "+", так и "-".

К существенному достоинству этой нумерации следует отнести тот факт, что при вычислениях на ее основе отпадает необходимость в операции "вычитания". Действительно, изменение знака числа на противоположный осуществляется простой заменой всех 1 на 1 и наоборот. Скажем, число -17(10) запишется как 1101(3).
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Спасибо большое ! еще бы кто нибудь алгоритм привел перевода было бы вообще замечательно smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Вот PDF с сайта http://www.ternary.info/:
Там приведены основные правила работы с троичными системами счисления (в том числе и перевод (10) -> (3))


Прикрепленные файлы
Прикрепленный файл  troichnaja_arifmetika.rar ( 120.46 килобайт ) Кол-во скачиваний: 916
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


попробывал я написать эту программу перевода вот что у меня получилось:

var

n,i: integer;
st: string;
k,j,v,code: integer;
sum: real;


begin


writeln('vvedite n');
readln(n);
str(n,st);
j:= 3;



for i:=1 to length(st) do

begin

val(st[i],v,code);
sum:= (k * exp(3*ln(i)));


end;

writeln(sum);
readln;

end


но вывоит она очень странный ответ wacko.gif , может кто подскажет в чем дело и заодно как сделать, чтоб и -1 тоже считалось
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Значит, неправильно сделал... Вот это выводит те же ответы, которые записаны в PDF ("0" = 0, "+" = 1, "-" = -1):
var
n, ost: integer;
s: string;

begin
write('n = '); readln(n);

s := '';
while n >= 3 do begin
ost := n mod 3;

case ost of
0: s := '0' + s;
1: s := '+' + s;
2: s := '+-' + s;
end;

n := n div 3;
end;

case n of
0: s := '0' + s;
1: s := '+' + s;
2: s := '+-' + s;
end;
writeln('s(3) = ', s);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


я тут напутал немного мне надо переводить из тоичной уравновешенной в десятичную, вся запара у меня щас в том что я не магу сделать так что бы -1 при вводи троичного числа тоже считалась, извеняюсь за свою глупость mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Смотря как ты вводишь число в (3) системе... Если пользоваться "+-0", то вот так оно переводится в (10):
var
s: string;
base, n, i: integer;

begin
write('s(3) = '); readln(s);

base := 1; n := 0;
for i := length(s) downto 1 do begin
case s[i] of
'0': ;
'+': n := n + base;
'-': n := n - base;

end;
base := base * 3;
end;
writeln('n(10) = ', n);
end.
 К началу страницы 
+ Ответить 

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

 





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