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

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

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

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





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

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


Люди подскажите пожалуйста алгоритм перевода целого числа из десятичной с.с. в троичную уравновешенную. и что это за система такая троичная уравновешенная? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.12.2005 21:23
Сообщение #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).
 К началу страницы 
+ Ответить 
НУК
сообщение 22.12.2005 21:36
Сообщение #3





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

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


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


Гость






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


Прикрепленные файлы
Прикрепленный файл  troichnaja_arifmetika.rar ( 120.46 килобайт ) Кол-во скачиваний: 742
 К началу страницы 
+ Ответить 
НУК
сообщение 26.12.2005 21:23
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.12.2005 21:38
Сообщение #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.
 К началу страницы 
+ Ответить 
НУК
сообщение 26.12.2005 21:57
Сообщение #7





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

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


я тут напутал немного мне надо переводить из тоичной уравновешенной в десятичную, вся запара у меня щас в том что я не магу сделать так что бы -1 при вводи троичного числа тоже считалась, извеняюсь за свою глупость mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.12.2005 22:09
Сообщение #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

 



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