Помогите, пожалуйста! Нужно написать программу, которая будет переводить из любой системы...

0 голосов
32 просмотров

Помогите, пожалуйста! Нужно написать программу, которая будет переводить из любой системы счисления в десятеричную. И должны присутствовать mod и div, желательно покороче!


Информатика (50 баллов) | 32 просмотров
0

Это зачем они там должны присутствовать? Алгоритм перевода в 10-ю с/с не требует таких операций.

0

ok

0

help me, please!

0

А что Вы подразумеваете под "любой системой"?

0

Допустим, по основанию 50? Вы как себе представляете исходную запись такого числа? Вот для шестнадцатиричного используются цифры 0-9 и буквы A,B,C,D,E,F. А для основания 50? Основания 30? Основания 1623523? Так что нужно все же ограничиться каким-то максимальным основанием и дать набор символов для записи таких чисел.

0

из 2, 8 и 16-ой в 10-уз

0

Т.е. тогда можно говорить, что основание системы находится в пределах от 2 до 16.

0

Язык программирования Вы не указали. паскаль?

0

да

Дан 1 ответ
0 голосов
Правильный ответ

Var
  s:string;
  m,pk:real;
  a:array[1..20] of real;
  i,k,n:integer;
begin
  Write('Введите число в системе счисления с основанием [2;16]: ');
  Readln(s);
  n:=Length(s);
  for i:=1 to n do begin
    if s[i] in ['0'..'9'] then a[i]:=Ord(s[i])-Ord('0')
    else
      if s[i] in ['A'..'F'] then a[i]:=Ord(s[i])-Ord('A')+10
      else
        if s[i] in ['a'..'f'] then a[i]:=Ord(s[i])-Ord('a')+10
        else begin
          Writeln('Символ ',s[i],' недопустим!');
          Exit
          end
    end;
  Write('Введите основание системы счисления: '); Read(k);
  if (k<2) or (k>16) then begin
    Writeln('Такое значение недопустимо!');
    Exit
    end;
  m:=a[n];
  pk:=k;
  for i:=n-1 downto 1 do begin
    m:=m+a[i]*pk;
    pk:=pk*k
    end;
  Writeln('Десятичный эквивалент введенного числа равен ',m)
end.

Тестовое решение
Введите число в системе счисления с основанием [2;16]: 4e32Ca
Введите основание системы счисления: 16
Десятичный эквивалент введенного числа равен 5124810

(150k баллов)