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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2009, 19:44   #1
MrJenika
Форумчанин
 
Аватар для MrJenika
 
Регистрация: 07.09.2009
Сообщений: 361
По умолчанию Перевод с Паскаля на С++

граждане программисты, так как я к сожалению не знаю паскаль. то прошу вас перевести ниже приведённый код на С++.

/*Либо если у кого-то есть то прошу выложить исходник программы которая переводит десятичные числа в восьмеричные (на форуме искал, похожих много, даже нашёл то что давно искал, но того чего сейчас надо к сожалению нет)*/

Функция переводит из десятичной(обычной) системы счисления в восьмеричную.
DECIMAL -> OCTAL
Код:
FUNCTION DEC2OCT(DEC: LONGINT): STRING;

CONST
OCTDigts: STRING[8] = '01234567';

VAR
OCT : STRING;
I, J: LONGINT;

BEGIN
IF DEC = 0 THEN OCT := '0'
ELSE
BEGIN
OCT := '';
I := 0;
WHILE (1 SHL ((I + 1) * 3)) <=DEC DO I := I + 1;
{ 8^N = 2^(N * 3) }
{ (1 SHL (I + 1)) = 8^(I + 1) }
FOR J := 0 TO I DO
BEGIN
OCT := OCT + OCTDigts[(DEC SHR ((I - J) * 3)) + 1];
{ (DEC SHR ((I - J) * 3)) = DEC DIV 8^(I - J) }
DEC := DEC AND ((1 SHL ((I - J) * 3)) - 1);
{ DEC AND ((1 SHL ((I - J) * 3)) - 1) = DEC MOD 8^(I - J) }
END;
END;
DEC2OCT := OCT;
END;
MrJenika вне форума Ответить с цитированием
Старый 20.11.2009, 20:26   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Код:
std::string dec2oct(long int dec)
{
	const char* OCTDigts = "01234567";
	std::string oct;
	long int    i, j;

	if(dec == 0)
		oct = '0';
	else {
		i = 0;
		while( (1 << ((i+1)*3)) <= dec )
			i++;
		for(j = 0; j <= i; j++) {
			oct += OCTDigts[dec >> ((i-j)*3)];
			dec &= ((1 << ((i-j)*3))-1);
		}
	}

	return oct;
}
netrino вне форума Ответить с цитированием
Старый 20.11.2009, 20:42   #3
MrJenika
Форумчанин
 
Аватар для MrJenika
 
Регистрация: 07.09.2009
Сообщений: 361
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод с Паскаля на Дельфи!. HAMMAN Помощь студентам 10 18.01.2012 11:20
от паскаля к с++ WOLFak Обсуждение статей 11 27.01.2010 00:18
из Паскаля в С++ Lees27 Общие вопросы C/C++ 1 14.09.2009 23:29
Перевод программки из Паскаля в C Tashka Общие вопросы C/C++ 4 16.10.2008 22:44
Перевод из Паскаля в Делфи Родион Общие вопросы Delphi 2 28.08.2008 16:52