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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2014, 15:29   #1
niikiitoss
 
Регистрация: 30.05.2014
Сообщений: 5
По умолчанию Сложение в 16 ичной системе счисления / С++

Вот написал программу сложения в 2-10ичной системах счисления, подскажите пожалуйста, каким образом её можно доделать, чтобы она считала в 11-16ричной?
Код:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstring> 
 
using namespace std;
 
int main()
{ 
    int osnovanie = 10;
    char bvector1[100];
    char bvector2[100];char rezult[100];
        cin >> bvector1 >> bvector2;
    int L1 = strlen(bvector1);
    for(int i = 0; i < L1; i++)
    {
        bvector1[i] -= '0';
    }
    int L2 = strlen(bvector2);
    for(int i = 0; i < L2; i++)
    {
        bvector2[i] -= '0';
    } 
    if (L1 != L2)
    {
        if (L1 > L2)
        {
            for (int i = 0; i < L2; i++)
            bvector2[L1-1-i] = bvector2[L2-1-i];
            memset(bvector2, 0, (L1-L2));
        }
        if (L2 > L1)
        {
            for (int i = 0; i < L1; i++)
            bvector1[L2-1-i] = bvector1[L1-1-i];
            memset(bvector1, 0, (L2-L1));
        }
    }
    int i;char carry, sum;
    int q;
    if (L1 > L2)
    q = L1;
    else q = L2;
    i = q - 1;
    carry = 0;
    int h;
    while (i >= 0)
    {
        sum = bvector1[i] + bvector2[i] + carry;
        h = sum/osnovanie;
        if (sum < osnovanie) {rezult[i--] = sum;}
        else rezult[i--] = sum - osnovanie;
        carry = h;
    }
    printf("\n");
    for (i = 0; i < q; i++)
    printf("%d",(int)rezult[i]);
    cout << "\n";
    system("Pause");
}
niikiitoss вне форума Ответить с цитированием
Старый 17.06.2014, 15:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В общем-то алгоритмически сложение что в двоичной, что в 33-ричной одинаково - и отличается только основанием системы исчисления
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.06.2014, 15:43   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если гора не идет к Магомету, Магомет идет за травой. Складывайте где Вам надо, а данные преобразовывайте к нужной системе. Неэффективно, зато универсально. Хоть 392-хричной системе счисления, лишь бы составить универсальную функцию перевода числа из одной системы в другую...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.06.2014, 15:53   #4
niikiitoss
 
Регистрация: 30.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Если гора не идет к Магомету, Магомет идет за травой. Складывайте где Вам надо, а данные преобразовывайте к нужной системе. Неэффективно, зато универсально. Хоть 392-хричной системе счисления, лишь бы составить универсальную функцию перевода числа из одной системы в другую...
Теоретически я понимаю, но практически нифига не получается, можете пример для 15 ичной например?
niikiitoss вне форума Ответить с цитированием
Старый 17.06.2014, 15:59   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вы должны написать (или поискать в инете) функцию преобразования из одной системы в другую.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.06.2014, 16:03   #6
niikiitoss
 
Регистрация: 30.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Вы должны написать (или поискать в инете) функцию преобразования из одной системы в другую.
Нет так нельзя, условие задачи не позволяет. Нужно напрямую вычислять, без преобразований
niikiitoss вне форума Ответить с цитированием
Старый 17.06.2014, 16:39   #7
niikiitoss
 
Регистрация: 30.05.2014
Сообщений: 5
По умолчанию

Ну что, неужели никто не знает? По идее тут по мелочи надо сделать
niikiitoss вне форума Ответить с цитированием
Старый 17.06.2014, 17:45   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Вот тут, по недесятичным системам исчисления.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.06.2014, 17:49   #9
niikiitoss
 
Регистрация: 30.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Вот тут, по недесятичным системам исчисления.
Я умею это считать на листочке, я не знаю как это реализовать на c++
niikiitoss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать прогу: операции над натуральными числами в P ичной системе счисления gangsty Общие вопросы C/C++ 0 02.10.2012 11:40
Реализация суммы,вычитания в p-ичной системе счисления DTroy Visual C++ 2 09.10.2011 06:17
Умножение двух чисел в p-ичной системе счисления - turbo pascal oxygen2007rus Помощь студентам 1 13.12.2009 16:00
Сложение в двоичной системе счисления Volchara Общие вопросы C/C++ 2 23.04.2009 19:54
Сложение в 23ичной системе счисления Ямагути Общие вопросы C/C++ 6 04.12.2008 21:21