Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

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

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

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

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

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

есть вопросы?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 02.03.2018, 20:51   #3
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,649
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

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

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

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

Цитата:
Сообщение от min@y™ Посмотреть сообщение
А вот у меня вопрос: зачем в десятичную-то переводить?
не занудствуйте.
Переводить во внутреннее числовое машинное представление, которое позволяет производить над числами арифметические действия.
Так устроит?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.03.2018, 00:15   #5
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,649
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

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

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

Цитата:
Сообщение от 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 в 10:13.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.03.2018, 11:44   #7
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,649
Репутация: 2371

icq: 100500
skype: kick-ass
По умолчанию

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

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

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

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

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

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

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

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

Последний раз редактировалось СтудПом; 03.03.2018 в 20:08.
СтудПом вне форума   Ответить с цитированием
Старый 09.03.2018, 08:57   #10
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,702
Репутация: 1522

skype: newerow1989
По умолчанию

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


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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пользователь ввел число и я хочу проверить в какой системе счисления это число. И чтоб эта система счисления вывелась на экран. Как такое реализовать Shilen Python 3 27.12.2017 17:56
[Delphi] ИЗ четырнадцатеричной системе счисления в десятеричной системе счисления Safok Помощь студентам 1 17.11.2014 23: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


18:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru