Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2018, 16:00   #1
igormel
Пользователь
 
Регистрация: 11.11.2016
Сообщений: 22
По умолчанию Помогите с операциями в троичной системе счисления

Программа в дэлфи. Даны два числа в троичной системе, нужно их сложить, умножить, отнять, и разделить. Была мысль сделать из двух чисел массив, а потом уже как-то дальше работать. Но потом я вообще запутался. Может будут какие-нибудь идеи? Если кинете куски кода, будет вообще шикарно
igormel вне форума Ответить с цитированием
Старый 02.03.2018, 16:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

это вообще можно сделать двумя способами.

очень сложным и очень простым.

сложный способ. реализовывать подобие длинной арифметики, но для троичной СС. Сложение, вычитание, умножение и деление "в столбик" (подчёркиваю - всё в троичной СС).

а есть очень простой способ, который я Вам и рекомендую.
взять строку с числами в любой СС (в троичной в данном случае), перевести в десятичную. Выполнить нужную операцию на числами (это банально).
Результат перевести в нужную СС( в данном случае - в троичную СС).

есть вопросы?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2018, 19:51   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а есть очень простой способ, который я Вам и рекомендую.
взять строку с числами в любой СС (в троичной в данном случае), перевести в десятичную. Выполнить нужную операцию на числами (это банально).
Результат перевести в нужную СС( в данном случае - в троичную СС).

есть вопросы?
А вот у меня вопрос: зачем в десятичную-то переводить? Может, всё-таки, в двоичную лучше, ведь именно в двоичном виде работает вся цифровая электроника.

Так, не?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.03.2018, 23:06   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
А вот у меня вопрос: зачем в десятичную-то переводить?
не занудствуйте.
Переводить во внутреннее числовое машинное представление, которое позволяет производить над числами арифметические действия.
Так устроит?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2018, 23:15   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не занудствуйте.
Переводить во внутреннее числовое машинное представление, которое позволяет производить над числами арифметические действия.
Так устроит?
А мог бы просто извиниться. И больше не вводить нубов в заблуждение.
У нас на заводе до сих пор попадаются индивиды-программисты, думающие, что инфа в компе хранится в десятичной системе, и на полном серьёзе возмущающиеся: "какой дебил придумал 16-ричную/двоичную систему? пальцев-то 10!"...

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.03.2018, 09:11   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
И больше не вводить нубов в заблуждение.
У нас на заводе до сих пор попадаются индивиды-программисты, думающие, что инфа в компе хранится в десятичной системе,
так с точки зрения прикладного программиста всё так и есть - глубоко фиолетово, сколько байт занимает машинное представление, в каком оно виде - прямой код, дополнительный, обратный, число с мантиссой, или вообще в BCD ( Двоично-десятичный код (англ. binary-coded decimal), BCD ).
Программист пишет:
Код:
var a, b : integer;
begin
  a := 17;
  b := -11;
  WriteLn(a*b)
end.
Вопросы.
- В какой системе счисления 17, записанное в переменную a ?
- В какой системе счисления -11, записанное в переменную b ?
- Какой ответ и в какой системе счисления будет напечатан ответ (произведение двух чисел) ?

И АБСОЛЮТНО неважно, в каком виде оно там хранится внутри.
Это понятно?

Продолжаем разговор.
Возвращаясь к теме.
Пусть дана строка, в которое записано некое число, представленное в троичной системе счисления'
Задача - написать код, который переводит это число в десятичное представление.
Справитесь? Приведите, пожалуйста, код (на Pascal, например).
А потом попытайтесь объяснить, где в этом код присутствует двоичная система счисления и для чего она там. При желании можете ещё рассказать про АЛУ.


Ещё раз - для заявленного мной алгоритма числа нужно переводить В ДЕСЯТИЧНУЮ систему (как она там хранится внутри желязяки - меня вообще не трогает), выполнять действия и переводить в троичную (о ужас, если, например, использовать для хранения троичных чисел целочисленные переменные, то там вообще будет хранится совершенно другое значение, никак не связанное с троичной СС.
Хотя, как раз для того, чтобы избежать этой несуразицы (и для универсальности - для систем счисления с основанием >9) я бы рекомендовал хранить представление числа в троичной СС в виде СТРОКИ.
Но это, имхо, к предложенному мной алгоритму решения задачи отношения не имеет.
Представьте, что Вы расписываете алгоритм решения этой задачи для ученика 5-го класса (как раз в нём они изучают системы счисления, если я не ошибаюсь).
Вот дали ему два числа в троичной СС их надо перемножить и вывести результат в троичной СС.
Чтобы было в этом алгоритме?


p.s. Не хотел я ввязываться в дискуссию, но, простите, не удержался.
Тут уже на форуме было подобное бурное обсуждение и я не хотел повторять его.


Последний раз редактировалось Serge_Bliznykov; 03.03.2018 в 09:13.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.03.2018, 10:44   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так с точки зрения прикладного программиста всё так и есть - глубоко фиолетово, сколько байт занимает машинное представление, в каком оно виде - прямой код, дополнительный, обратный, число с мантиссой, или вообще в BCD ( Двоично-десятичный код (англ. binary-coded decimal), BCD ).

Перестань пожалуста, я тебя очень прошу!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.03.2018, 13:58   #8
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Не могу согласиться.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
И АБСОЛЮТНО неважно, в каком виде оно там хранится внутри.
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
для заявленного мной алгоритма числа нужно переводить В ДЕСЯТИЧНУЮ систему
Вот эти две фразы на самом деле вступают в противоречие.

Таки да - для вычислений нам нужно переводить числа в такой формат, в котором мы умеем производить вычисления. И этот формат, вообще говоря, от систем счисления абстрагирован. Хоть в троичном компьютере, хоть в машине Поста с единичной системой - главное, что машина умеет эти числа складывать и умножать.

И ведь существует два общих алгоритма для перевода этих "вычислительных чисел" в произвольную систему счисления (с последовательным делением на основание с остатком) и обратно (с последовательным прибавлением очередной цифры и доумножением на основание) - и тут нет никакого особого положения ни двоичной, ни десятичной системы
Black Fregat вне форума Ответить с цитированием
Старый 03.03.2018, 19:05   #9
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию Арифметические операции, перевод из одной системы в другую

Перевод целых из одной системы счисления в другую.
Арифметические операции вычисления в столбик для неограниченных целых.

Не сочтите за издевательство, но иду разогревать попкорницу :D

Блин, посмотрел, оказывается, там ещё и на списках сделано - трындец полный. Не спрашивайте, как эта хрень работает!

Последний раз редактировалось СтудПом; 03.03.2018 в 19:08.
СтудПом вне форума Ответить с цитированием
Старый 09.03.2018, 07:57   #10
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Может будут какие-нибудь идеи?
Есть одна идея - это Сложение и вычитание десятичных чисел - там 10 заменить на 3 (должно сработать / пока не проверял)


Перевод чисел из одних систем счисления в другие - непонятно для чего Вам понадобилось...
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пользователь ввел число и я хочу проверить в какой системе счисления это число. И чтоб эта система счисления вывелась на экран. Как такое реализовать Shilen Python 3 27.12.2017 16:56
[Delphi] ИЗ четырнадцатеричной системе счисления в десятеричной системе счисления Safok Помощь студентам 1 17.11.2014 22:41
Умножение в 4-системе счисления StoneGod Общие вопросы C/C++ 3 11.10.2014 15:56
Не работает преобразование кода из одной системы счисления в ID в другой системе счисления Ultran PHP 1 09.11.2013 21:15
вывести все числа в троичной системе до n alto_angelo Помощь студентам 0 01.11.2012 17:43