Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Арифметические операции в разных системах счислени 
V
    Опции темы
LiToRBoL
Дата 8.1.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Определить подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10. Результат выполнения проверить на десятичных числах.
Задачу необходимо решить без использования строк.
PM MAIL   Вверх
mes
Дата 8.1.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Kallikanzarid @  8.1.2009,  19:50 Найти цитируемый пост)
А то пока ничего не понятно  smile  

ну если для людей с опытом не понятно, то представляю как приходится студентам smile
поэтому решил помочь, вот сложение и умножение для безнаковых чисел.
конвертацию попробуйте сделать сами, чтоб разобрались в происходящем.

Код


unsigned add_u (unsigned a, unsigned b, unsigned base)
// сложение столбиком безнаковых чисел в определенной системе счисления
{
     unsigned res = 0; // результат
     unsigned m = 0; // мысленное

     for (unsigned ps=1; a || b || m; ps*=10, a/=10, b/=10)
     {
        unsigned d = a%10 + b%10 + m;
        res += d%base * ps;
        m=d/base;
     }
     return res;
}
unsigned muld_u (unsigned a, unsigned digit, unsigned base)
// умножение столбиком безнаковoго числа на цифру в определенной системе счисления
{
       unsigned res = 0;
       unsigned m = 0;

       for (unsigned  ps=1; a || m; a/=10, ps*=10)
       {
          unsigned d = a%10 * digit +m;
          res += d % base * ps;
          m=d/base;
       }
     return res;
}

unsigned mul_u (unsigned a, unsigned b, unsigned base)
// умножение столбиком безнаковых чисел в определенной системе счисления
{
     unsigned res = 0;

     for (unsigned ps=1; b && a; b/=10, ps*=10)
     {
          res = add_u (res, muld_u (a, b%10, base)*ps, base);
     }

     return res;
}



--------------------
PM MAIL WWW   Вверх
LiToRBoL
Дата 9.1.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромное, много есть чего не понятного. Буду разбераться.
Еще раз спасибо. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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