Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод в десятичную систему исчисления 
V
    Опции темы
navi
Дата 9.4.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.4.2007
Где: Moldova

Репутация: нет
Всего: нет



здравствуйте! помогите please c переводом из системы исчисления по основанию b<9 в десятичную. smile помогите очень нужно.
смjтрел в темах именно такой вопрос не нашёл...
ах да:
входные данные: само число и основание  b. 
--------------------
 Хакер не преступник! Взлом ради искусства! Смысл в свободе!
PM MAIL Skype   Вверх
volvo877
Дата 10.4.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Если число, которое надо перевести в 10 с/с задано именно числом, а не строкой (бред, конечно, но задачи бывают разные), то вот так:
Код
function todec(n, radix: longint): longint;
var
  mult, s: longint;
begin
  mult := 1; s := 0;
  while n > 0 do begin
    s := s + mult * (n mod 10);
    n := n div 10;
    mult := mult * radix;
  end;
  todec := s;
end;


begin
  writeln(todec(751, 8));
end.

751(8) -> 489(10)
PM MAIL   Вверх
navi
  Дата 10.4.2008, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.4.2007
Где: Moldova

Репутация: нет
Всего: нет



Цитата(volvo877 @  10.4.2008,  00:03 Найти цитируемый пост)
Если число, которое надо перевести в 10 с/с задано именно числом

извиняюсь за неточность число вводится строкой.

--------------------
 Хакер не преступник! Взлом ради искусства! Смысл в свободе!
PM MAIL Skype   Вверх
volvo877
Дата 10.4.2008, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(navi @  9.4.2008,  23:13 Найти цитируемый пост)
число вводится строкой.

Тогда все проще:

Код
function todec(n: string; radix: longint): longint;
var
  s, i: longint;
const
  digit: string[16] = '0123456789ABCDEF';
begin
  s := 0;
  while (n[1] = '0') and (length(n) > 1) do delete(n, 1, 1);
  for i := 1 to length(n) do s := s * radix + pos(n[i], digit) - 1;

  todec := s;
end;


begin
  writeln(todec('751', 8));
end.

PM MAIL   Вверх
6pika4u
Дата 18.5.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 18.5.2008

Репутация: нет
Всего: нет



Ребят,а как сделать обратную здачу?
PM MAIL   Вверх
Dobermann
Дата 18.5.2008, 15:53 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата

Ребят,а как сделать обратную здачу?

Нетрудно.... =)
Код

var a: array[1..20] of 0..1;
n,k,kol: integer;
begin
  writeln('>'); readln(n);
  kol:=0;
  while n>0 do
    begin
      kol:=kol+1; a[kol]:=n mod 2; n:=n div 2;
    end;
  writeln('2-я запись: ');
  for k:=kol downto 1 do write(a[k]);
  readln
end.

PM   Вверх
Agentum
Дата 10.12.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2008

Репутация: нет
Всего: нет



Ребят,как перевести числа из систем счисления с основанием от 2 до 35 в десятичную?напишите пожалуйста алгоритм.
PM MAIL   Вверх
volvo877
Дата 10.12.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Agentum @  10.12.2008,  11:08 Найти цитируемый пост)
как перевести числа из систем счисления с основанием от 2 до 35 в десятичную?
digit в программе из 4-го поста заменить на
Код
  digit: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

PM MAIL   Вверх
Agentum
Дата 10.12.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2008

Репутация: нет
Всего: нет



Спасибо.А как сделать перевод букв из нижнего регистра в верхний и выполнить проверку на правильность ввода числа в данной системе счисления?
PM MAIL   Вверх
volvo877
Дата 10.12.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Agentum @  10.12.2008,  16:31 Найти цитируемый пост)
как сделать перевод букв из нижнего регистра в верхний
Есть функция UpCase.

Цитата(Agentum @  10.12.2008,  16:31 Найти цитируемый пост)
выполнить проверку на правильность ввода числа в данной системе счисления
Что-то вроде этого:
Код
function isCorrect(s: string; radix: longint): boolean;
var i, p: integer;
begin
  isCorrect := false;
  for i := 1 to length(s) do begin
    p := pos(s[i], digit);
    if (p = 0) or (p > radix) then exit; { возвращаем false }
  end;
  isCorrect := true;
end;

(s - строка, в которой содержится запись числа, radix - система счисления)
PM MAIL   Вверх
Agentum
Дата 10.12.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2008

Репутация: нет
Всего: нет



А функция апкейс случайно не требует модуля wincrt?
PM MAIL   Вверх
volvo877
Дата 10.12.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Agentum @  10.12.2008,  20:12 Найти цитируемый пост)
А функция апкейс случайно не требует модуля wincrt? 
Нет, не требует... Она содержится в модуле system, ничего подключать не надо...
PM MAIL   Вверх
Agentum
Дата 10.12.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2008

Репутация: нет
Всего: нет



И еще...вот в проверке.как мне проверить,если в числе есть буква(ну например буква B,означающая 11),а система счисления например 11,где не может быть буквы В?
PM MAIL   Вверх
volvo877
Дата 10.12.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Я уже написал выше, смотри внимательнее... Функция IsCorrect проверяет наличие запрещенных для данной системы счисления символов...
PM MAIL   Вверх
Agentum
Дата 11.12.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.12.2008

Репутация: нет
Всего: нет



И еще один глупый вопрос...если вводят число с минусом как его удалить,а затем поставить на место после перевода? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.