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

Поиск:

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


Новичок



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

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



Блин еще вопрос.Как правильно обратиться к функции upcase?напишите пожалуйста правильно для данной программы.
PM MAIL   Вверх
Agentum
Дата 11.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все,спасибо.Разобрался с апкейс.только еще один вопрос...проверка правильности ввода числа не совсем работает:(она не проверяет число на лишние буквы...
PM MAIL   Вверх
Montr
Дата 12.12.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробуй заменить
Цитата

  digit: string[36] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

на
Цитата

  digit: string[16] = '0123456789ABCDEF';

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


Эксперт
****


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

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



Montr, очень умный, да? Я специально заменил на полную строку, чтобы можно было работать с системами счисления до 36...

Agentum, мне надоело заниматься телепатией: это у тебя не работает, то у тебя не работает... Все работает. Есть проблемы - приводи программу полностью и показывай при каких данных есть ошибка! Все.
PM MAIL   Вверх
Agentum
Дата 12.12.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хорошо,извини пожалуйста,спешу просто.Сегодня выложу код и покажу,что она делает неправильно(ну или я напортачил)
PM MAIL   Вверх
Agentum
Дата 13.12.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


Эксперт
****


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

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



Цитата(Agentum @  13.12.2008,  14:48 Найти цитируемый пост)
Возник вопрос при переводе чисел с точкой...как переделать функцию,чтобы она переводила дробные части чисел,то есть часть строки после точки? 
У меня в профиле зайди по второй ссылке из списка "Любимые места в сети", там есть решение этой задачи...
PM MAIL   Вверх
Agentum
Дата 13.12.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По второй ссылке нет ничего.:(
PM MAIL   Вверх
Agentum
Дата 13.12.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот нашел по первой ссылке
2. перевод X radix-> X 10

Код
function to_dec(n: string; radix: longint): real;
var
 _int, stepen: longint;
 _frac: real;
  s: string;
 i, p: byte;
begin
 p := pos('.', n);
 if p = 0 then s := n
 else s := copy(n, 1, p - 1);
 {
  В вышеприведенных строках в строку s записывается либо целая часть числа,
  либо все число, если у него нет дробной части
 }
  _int := todec(s, radix); { Переводим целую часть в 10 систему счисления }
 _frac := 0.0;
  {
  Если есть вещественная часть - то выполняем ее перевод
  в систему с основанием radix
 }
 if (p <> 0) and (p < length(n)) then begin
   s := copy(n, p + 1, 255); { Копируем в s только дробную часть, безо всяких точек }
   { Удаляем лишние ведомые нули (справа) }
  while s[length(s)] = '0' do delete(s, length(s), 1);
   {
   по алгоритму нужно последовательно умножать цифры на числа,
   являющиеся обратными соответствующей степени системы счисления
  }
  stepen := 1; { Здесь будет храниться текущая степень системы счисления }
  for i := 1 to length(s) do begin
   stepen := stepen * radix;
    {
    собственно, алгоритм -умножаем цифру на обратное число
    и добавляем в аккумулятор
   }
   _frac := _frac + pred(pos(upcase(s[i]), digit)) / stepen;
  end;
  end;
 { собираем из двух частей результат: }
 to_dec := _int + _frac;
end;


Это сообщение отредактировал(а) volvo877 - 14.12.2008, 09:28
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.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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