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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2017, 22:16   #1
artem_alexeev
Новичок
Джуниор
 
Регистрация: 18.02.2017
Сообщений: 1
По умолчанию Перевод из 3 в 16 систему счисления

Напишите, пожалуйста, программу в паскале, которая переводит из троичной в шестнадцатеричную систему счисления, напрямую, если можно
Сам ничего не понимаю, мозг уже кипит
Буду очень благодарен!
artem_alexeev вне форума Ответить с цитированием
Старый 18.02.2017, 23:08   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от artem_alexeev Посмотреть сообщение
из троичной в шестнадцатеричную систему счисления, напрямую
Извиняюсь, а такое вообще возможно? Тройка же (добавлена частица "не") является целой степенью двойки

Последний раз редактировалось Вадим Мошев; 19.02.2017 в 13:24. Причина: Добавил частицу "НЕ"
Вадим Мошев вне форума Ответить с цитированием
Старый 19.02.2017, 09:29   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Тройка же не является целой степенью двойки
Yes ?
И действительно, что значит "напрямую" ? Одна символьная строка - 3-ичное представление числа - переводится в другую символьную строку - 16-ричное представление того же числа путем определенных математических телодвижений. А "напрямую" - без них, телепатически?
Если "накривую", то хотя бы так :
Код:
program conv316;
const
  str3: string = '012' ;
  str16: string = '0123456789ABCDEF' ;
var
  i,j,n,mn : integer ; flag : Boolean ;
  stro : string ;
label lab ;
begin
lab: Write (' ? ') ;
   Readln(stro); n := Length(stro) ;
   flag := True ;
   for i := 1 to n do
      if Pos(stro[i],str3) = 0 then flag := False ;
   {Test of input string}
   If flag then
      begin
        j := 0 ; mn := 1 ;
        for i := n downto 1 do
          begin
            j := j + (Pos(stro[i],str3)-1) * mn ;
            mn := mn * 3
          end ;
        stro := '' ;
        repeat
          i := j mod 16 ;
          stro := str16[i+1] + stro ;
          j := j div 16
        until j=0 ;
        Writeln (stro) ;
      end
   else Writeln ('F') ;
goto lab ;
end.
Цитата:
Сам ничего не понимаю, мозг уже кипит
В этой фразе содержится внутреннее противоречие: что там может кипеть, если...

Последний раз редактировалось digitalis; 19.02.2017 в 18:46.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод в двоичную систему счисления _Лето_ Общие вопросы C/C++ 4 24.11.2013 12:45
Перевод из 3 в 2 систему счисления на С++ VladJAy Помощь студентам 10 25.10.2012 15:50
Перевод из десятеричной в двоичную систему счисления idShura Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 13.06.2012 19:39
Перевод числа в др систему счисления! diallfam Помощь студентам 1 01.05.2012 12:09
Перевод вещественного числа из 10 в 2 Систему счисления. [С++] Veselyn Помощь студентам 9 17.01.2010 00:39