Шестнадцатеричный калькулятор для добавления и вычитанияC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Шестнадцатеричный калькулятор для добавления и вычитания

Сообщение Anonymous »

У меня есть проблема с моей программой, которая используется для расчета добавления и вычитания для шестигранных. Алгоритм моей программы: < /p>


Возьмите 2 строки, введенные пользователем, и "+" или "-" в зависимости от оператора
, который они выбрали < /li>
, если второй номер, если увеличить, если увеличить число, если увеличить число, если-то увеличенное, если увеличен, но номеры, если увеличенные номера, и все большее число, а также увеличение числа. Вычтите меньшее число и положите « -» перед ним при возвращении результата
(1 -8 должен = -7, но вместо этого я беру 8 -1 = 7 и возвращаю » -и« 7 », так что это дает« -7) < /li>
HexAdecimal < /li>
< /ul>

Однако я столкнулся с проблемой, в которой мои вычисления дают мне неправильные ответы.
(например, ffffff + fffffffff «ffffffe» вместо «10000ffffffe») < /p>

Я создал свою собственную функцию мощности для этой программы, так как мне нужен номер, который может подняться до 16 Fs для шестнадцатеричной строки. < /p>

Функция мощности: < /p>

unsigned long long int result = 1;
int i;

for (i = 0; i < y; i++)
{
result *= x;
}

return result;
< /code>

code: < /p>

int i;
int power = FirstHexaNumber.length() - 1;
int power2 = SeconHexaNumber.length() - 1;
int checkLength = FirstHexaNumber.length();
int checkLength2 = SeconHexaNumber.length();
unsigned long long int decimalNumber = 0;
unsigned long long int decimalNumber2 = 0;
unsigned long long int totalDecimal;
int temporary;
string result;

if (Operator == '+') //check if operator is add or minus
{
//Convert Hex to Decimal for first number

for (i = 0; i < checkLength; i++)
{
if (int(FirstHexaNumber) >= 48 && int(FirstHexaNumber) = 65 && int(FirstHexaNumber) = 97 && int(FirstHexaNumber) = 48 && int(SeconHexaNumber) = 65 && int(SeconHexaNumber) = 97 && int(SeconHexaNumber) = 10) //if temporary >= 10, that means it needs to be converted to alphabet
{
result.insert(0, 1, temporary + 55); //result.insert inserts a string of text into a spot, and pushes everything else backwards.
} //in this case, result.insert assigns "temporary+55" into the spot of characters 0 to 1.

else //else, it means that the decimal will be a number, add 48 to convert to ascii
{
result.insert(0, 1, temporary + 48);
}
totalDecimal = totalDecimal / 16; //divide by 16 to move on to finding the next digit/alphabet
}

return result;
}
else if (Operator == '-') //check if operator is add or minus
{
//Convert Hex to Decimal for first number

for (i = 0; i < checkLength; i++) //as long as the loop does not exceed the length of the hexadecimal, run it
{
if (int(FirstHexaNumber) >= 48 && int(FirstHexaNumber) = 65 && int(FirstHexaNumber) = 97 && int(FirstHexaNumber[i]) = 48 && int(SeconHexaNumber[i]) = 65 && int(SeconHexaNumber[i]) = 97 && int(SeconHexaNumber[i]) = decimalNumber2)
{
totalDecimal = decimalNumber - decimalNumber2; //subtract bigger number by smaller number.

if (totalDecimal == 0)
{
return "0";
}

for (i = 0; totalDecimal != 0; i++)
{
temporary = totalDecimal % 16;

if (temporary >= 10)
{
result.insert(0, 1, temporary + 55);
}
else
{
result.insert(0, 1, temporary + 48);
}
totalDecimal = totalDecimal / 16;
}

return result;
}
else
{
totalDecimal = decimalNumber2 - decimalNumber; //subtract bigger number by smaller number.

if (totalDecimal == 0)
{
return "0";
}

for (i = 0; totalDecimal != 0; i++)
{
temporary = totalDecimal % 16;

if (temporary >= 10)
{
result.insert(0, 1, temporary + 55);
}
else
{
result.insert(0, 1, temporary + 48);
}
totalDecimal = totalDecimal / 16;
}

return "-" + result;
}

}
return 0;


Подробнее здесь: https://stackoverflow.com/questions/513 ... ubtraction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»