Показать сообщение отдельно
  #8  
Старый 07.03.2009, 02:03
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

мой код правильный. любое число длиной в n разрядов в q-ричной системе счисления определяется как
An*q^(n-1) + A(n-1)*q^(n-2) + ... + A2*q^1 + A1*q^0 , где An-цифра, стоящая в n-ном разряде.

насчет твоего кода:
Код:
for i:= Length(str) downto 0 do
до 1 а не до 0
Код:
 f:= f + (ord(str[i])-ord('1'))*(Length(str)+1);
ord(str[i])-ord('1')=нужная цифра-1. значит, если стоит ноль, то он станет -1, а 1 станет нулем.
Length(str)+1 - эт вообще не то, что надо.
если по этому коду перевести строку, то получится:

строка='135';
5: 4*4=16
+
3: 2*4=8
+
1: 0*4=0
24

то есть код совсем неправильный

2Karsh: избыточности много. такие вещи, как Ord('<символ>'), являются константами. значение length(s) используется 1 раз, присваивать значение функции, используемой меньше 2 раз, переменной - это дурной тон. а математические функции типа возведения в степень пишут на языке ассемблера. а функция val может препода не устраивать.
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием