Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2010, 15:06   #1
Moneo
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 37
Сообщение Проблема с переводом в десятичную СС в Турбо Паскале

Здравствуйте. Я перевел числа в двоичную СС и получил два массива по 8 знаков, дальше выполнил нужные операции и для перевода в десятичную СС прописал функцию возведения в степень и следующий код
Код:
begin
 for i:=8 downto 1 do sys:=sys+A[i]*pow(2,i);
 writeln('B DECYTICHOM:  ',sys);
 end;
Но вот в чем проблема: при переводе индексируются не нужные нули слева и получается что индексы к нужным мне числам уже не те, например: число 13(10)=00001101 и индексы должны быть 0,1,2,3 а у меня получается отсчет слева и у первой единицы индекс 5. Как сделать отсчет справа.

Последний раз редактировалось Stilet; 09.02.2010 в 15:43.
Moneo вне форума Ответить с цитированием
Старый 09.02.2010, 16:29   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Код:
for i:=8 downto 1 do sys:=sys+A[i]*pow(2,8-i);
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 09.02.2010, 21:40   #3
Moneo
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 37
Сообщение

Цитата:
Сообщение от Greblin Посмотреть сообщение
Код:
for i:=8 downto 1 do sys:=sys+A[i]*pow(2,8-i);
тогда получается 14 а не 13 не знаю почему
Moneo вне форума Ответить с цитированием
Старый 09.02.2010, 23:39   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Инициализируйте sys нулём. Если не поможет, выложите свою функцию pow, больше ошибке быть негде
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 10.02.2010, 02:44   #5
Moneo
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 37
Радость

Цитата:
Сообщение от Greblin Посмотреть сообщение
Инициализируйте sys нулём. Если не поможет, выложите свою функцию pow, больше ошибке быть негде
не помогло, самое интересное что при сложении результат он правильно выводит, но если выводить исходные числа, то ошибка на 1. Код функции:
Код:
function pow(a,x:longint):longint;
var
t,i:longint;
begin
t:=a;
for i:=1 to x-1 do
t:=t*a;
pow:=t;
end;

Последний раз редактировалось Stilet; 10.02.2010 в 08:39.
Moneo вне форума Ответить с цитированием
Старый 10.02.2010, 15:08   #6
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну дык правильно, pow(a, 0) у Вас вернёт a, а не 1. Сделайте отдельный обработчик
Код:
if x = 0 then pow := 1
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 10.02.2010, 17:59   #7
Moneo
Пользователь
 
Регистрация: 21.01.2010
Сообщений: 37
По умолчанию

большое спасибо
Moneo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Потенота. Проблема с переводом единиц измерения. Arkuz Помощь студентам 2 18.12.2009 18:12
Подпрограмма на Турбо паскале daemoon1 Помощь студентам 9 14.12.2009 00:36
Графика в Турбо Паскале Андрей07 Помощь студентам 3 30.06.2009 09:12
Массивы в Турбо Паскале mela Помощь студентам 2 01.05.2009 13:57