[identity profile] shwed-spb.livejournal.com posting in [community profile] useful_faq
Доброе утро всем.
Тут одна знакомая девушка попросила помочь с лабами по программированию на си.
Я же не прогал уже пару лет точно.
Ну ничего, почти все сделал. (ай, маладец) =)
Но одна затычка вышла.
Есть задача - написать прогу, переводящую число, скажем из 4-чной системы счисления, в, скажем 5-ричную, с промежуточной 2-ичной с.с..
Ума не приложу, как сделать,, тем более, и времени особо нет думать. Вот если с 10-чной промежуточной... Это можно. Но 2-ная...

Может кто-нибудь подсказать как это сделать?

Date: 2007-05-07 06:39 am (UTC)
From: [identity profile] dimmik.livejournal.com
Что значит "с промежуточной двоичной"?
Нужно представление четверичного числа в двоичной и пятеричной системах?

Re

Date: 2007-05-07 06:50 am (UTC)
From: [identity profile] granite-golem.livejournal.com
Двоичная - это как раз компьютер хорошо понимает, он в ней все и хранит. Но для человека, собственно, есть само число (количество), а есть его представление в цифрах. Конкретизируйте задачу в данных терминах.

Date: 2007-05-07 07:04 am (UTC)
From: [identity profile] roman-pro.livejournal.com
функция itoa из crt возможно спасёт отца русской демократии =)

Date: 2007-05-07 08:21 am (UTC)
From: [identity profile] roman-pro.livejournal.com
Ну можно ручками через строковое представление:
из четверичной в двоичную перевести легко, достаточно идти по строковому представлению числа и тупо заменять каждый символ на пару по правилам:
'0'->"00"
'1'->"01"
'2'->"10"
'3'->"11"
После чего отсечь нуль слева, если он присутствует (для красоты, на результат не влияет).

Ну можно и более "честным" путём:

int from4(char* s)
{
int result=0;
int power=0;
char* p=s+strlen(s);
char ch;
while(--p>=s)
{
ch=*p;
ch-='0';
result+=pow(4, power++)*ch;
}
return result;
}

код не проверял, но вроде должен работать.

Date: 2007-05-07 02:28 pm (UTC)
From: [identity profile] a-bronx.livejournal.com
http://algolist.manual.ru/maths/teornum/count_sys.php