В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
zaharovvlad1337
zaharovvlad1337
01.01.2020 07:09 •  Информатика

Python или Pascal, на любом языке, главное - условие


Python или Pascal, на любом языке, главное - условие

Показать ответ
Ответ:
galina1809
galina1809
21.03.2020 08:26
Const
  k = 50;

var
  s, si, sf: string;
  powm, n10i: longint;
  i, j, m, ls, err, ni, nf: integer;
  a: double;

begin
  Write('Введите основание системы счисления (2..9): ');
  Readln(m);
  if not (m in [2..9]) then Writeln('Ну-ну...')
  else begin
    Write('Введите положительное число в этой системе счисления: ');
    Readln(s);
    ls := Length(Trim(s));
    i := pos('.', s);
    if i > 0 then begin
      ni := i - 1; si := Copy(s, 1, ni);
      nf := ls - i; sf := Copy(s, i + 1, nf)
    end
    else begin si := s; ni := ls; sf := ''; nf := 0 end;
    powm := 1; n10i := 0;
    for i := ni downto 1 do
    begin
      Val(si[i], j, err);
      n10i := n10i + j * powm;
      powm := powm * m
    end;
    powm := m; a := 0;
    for i := 1 to nf do
    begin
      Val(sf[i], j, err);
      a := a + j / powm;
      powm := powm * m
    end;
    a := a + n10i;
    Writeln(s, '(', m, ')=', a, '(10)')
  end;
end.

Тестовое решение:

Введите основание системы счисления (2..9): 8
Введите положительное число в этой системе счисления: 23532.5034
23532.5034(8)=10074.6318359375(10)
0,0(0 оценок)
Ответ:
xmaxim99
xmaxim99
30.09.2021 15:41
2483,51(10) - отдельно переводим в восьмеричную с/с целую и дробную части. Целую часть переводим целочисленным последовательным делением на 8 с выписыванием остатков.
2483/8=310, остаток 3
310/8=38, остаток 6
38/8=4, остаток 6
Теперь записываем частное и приписываем остатки от последней строчки к первой. Получаем 4663(8) - это и есть 2483(10)
Дробную часть переводим, производя последовательное умножение на 8 и отбрасывая целые части результата. Прекращаем операцию, если получаем при умножении ноль или не видно дальнейшего смысла продолжать.
Отброшенные по порядку целые части образуют искомые цифры восьмеричного представления дробной части.
0.51x8=4.08 (4)
0.08x8=0.64 (0)
0.64x8=5.12 (5)
0.12x8=0.96 (0)
0.96x8=7.68 (7)
0.68x8=5.44 (5)
Достаточно. 0.51(10)≈0.405075(8)
2483.51_{10}\approx 4663.405075_8

Чтобы перейти к двоичной системе счисления, достаточно каждую восьмеричную цифру заменить эквивалентной двоичной триадой
4663.405075(8)=100 110 110 011.100 000 101 000 111 101(2)

Для перехода от двоичной системе к шестнадцатиричной достаточно разделить двоичное число тетрадами, начиная от десятичной точки в обе стороны, а затем каждую тетраду заменить шестнадцатиричной цифрой.
1001 1011 0011.1000 0010 1000 1111 0100(2)=9B3.824F4(16)

Для перехода к десятичной системе записываем число в расширенном представлении по степеням 16 и выполняем арифметические операции.
9\times 16^2+11\times 16^1+3\times 16^0+8\times 16^{-1}+2\times 16^{-2}+4\times 16^{-3}+ \\ 15\times 16^{-4}+4\times 16^{-5}=2483.509022 \approx 2483.509_{10}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота