Длинная десятичная точка [закрыто]C++

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

Сообщение Anonymous »

Я создал алгоритм деления в столбик на C++, но не могу понять, как правильно разместить десятичную точку. Я начинаю думать, что мне нужно переделать алгоритм.
std::string LoneFunctions::divideDecimalStrings(const std::string& num1, const std::string& num2, int precision)
{
int stringDP1 = LoneFunctions::findCh('.',num1);
int stringDP2 = LoneFunctions::findCh('.',num2);

std::string usedString1 = num1;
std::string usedString2 = num2;
int numDecimals,st1Decimals,st2Decimals;
if(stringDP1 != -1)
{
usedString1.erase(stringDP1,1);
st1Decimals = usedString1.size() - stringDP1;

} else
{
st1Decimals = 0;
}

if(stringDP2 != -1)
{
usedString2.erase(stringDP2,1);
st2Decimals = usedString2.size() - stringDP2;
;
} else
{
st2Decimals = 0;
}
numDecimals = st1Decimals + st2Decimals;

std::string result;
std::string current = "";
std::string temp = "";
std::string tempB = "";
std::string quotient = "";
int numOfDigits = 0;
int n = usedString1.size();
for(int i = 0; i < n; ++i)
{
current = usedString2;
temp += usedString1;
int count = 0;
while (LoneFunctions::compareStrings(temp, current) || LoneFunctions::isEqual(temp,current)) {
temp = subtractStrings(temp,current);
count++;
}
quotient += std::to_string(count);
numOfDigits++;
}
if (precision > 0) {
for (int i = 0; i < precision; ++i) {
temp += '0';
while (temp.size() > 1 && temp[0] == '0') temp.erase(0, 1);
while (quotient.size() > 1 && quotient[0] == '0') quotient.erase(0, 1);
int count = 0;
while (compareStrings(temp, usedString2) || isEqual(temp, usedString2)) {
temp = subtractStrings(temp, usedString2);
++count;
}
result += std::to_string(count);
}
}

quotient += result;

return quotient;

}

Это была одна из моих попыток заставить это работать, но она не сработает из-за ведущих нулей и особенностей работы этого алгоритма.
if (numDecimals > 0) {
quotient.insert(quotient.size() - precision - numDecimals, 1, '.');
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... imal-point
Ответить

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

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

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

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

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