У меня есть проблема с моей программой, которая используется для расчета добавления и вычитания для шестигранных. Алгоритм моей программы: < /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
Шестнадцатеричный калькулятор для добавления и вычитания ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1751771801
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[i]) >= 48 && int(FirstHexaNumber[i]) = 65 && int(FirstHexaNumber[i]) = 97 && int(FirstHexaNumber[i]) = 48 && int(SeconHexaNumber[i]) = 65 && int(SeconHexaNumber[i]) = 97 && int(SeconHexaNumber[i]) = 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[i]) >= 48 && int(FirstHexaNumber[i]) = 65 && int(FirstHexaNumber[i]) = 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;
Подробнее здесь: [url]https://stackoverflow.com/questions/51334901/hexadecimal-calculator-for-addition-and-subtraction[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия