0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 1
1

Получение целой и дробной части для десятичной дроби

23.08.2015, 18:05. Показов 5551. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.
Ищу ответа на достаточно простую задачу: человек вводит число в виде десятичной дроби, с которым в дальнейшем нужно совершить операцию. Заключается она в том, что дробь, ну например 12.123, нужно раскидать по двум переменным в виде 12 и 123 (не 12.0 и 0.123), при этом преобразовав эти две переменные в целочисленный тип. С преобразованием в int безопасным путёт проблемм нет, но вот с поиском метода разброса заморочился.

Я в принципе догадываясь, что можно просто умножать на десять, пока результат не получится. Но есть ли способ поизящьнее, тем более, что пользователь может ввести какое угодно длинное число.

P.S: немного уточнений: автор данного вопроса начал изучать C++ четыре дня назад, поэтому предъявлять ему за некомпетентность бесполезно.

P.P.S: Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2015, 18:05
Ответы с готовыми решениями:

Реализовать метод для выделения целой части дроби
Поле first — целое положительное число, числитель; поле second — целое положительное число,...

Реализовать метод для выделения целой части дроби
Поле first — целое положительное число, числитель; поле second — целое положительное число,...

Формирование двоичного кода для целой и дробной части + вывод в файл
Упростила программу, но суть ясна. Выводит число, потом его целую и дробную часть, после чего...

Написать арифмометр для вычисление целой и дробной части
Заранее спасибо. Добавлено через 4 часа 19 минут вот есть код программы. Нужно дописать для...

4
Модератор
Эксперт по электронике
8849 / 6628 / 903
Регистрация: 14.02.2011
Сообщений: 23,332
23.08.2015, 18:11 2
Цитата Сообщение от Wyctpujla Посмотреть сообщение
Но есть ли способ поизящьнее,
вводить в виде строки и парсить по точке
слева одна переменная справа другая
Цитата Сообщение от Wyctpujla Посмотреть сообщение
пользователь может ввести какое угодно длинное число.
а ужель в int не влезет?
0
Респект C++
23 / 33 / 14
Регистрация: 11.06.2015
Сообщений: 384
23.08.2015, 18:47 3
Сейчас подумаю.

Добавлено через 1 минуту
Может вам использовать unsigned int.

Добавлено через 2 минуты
Но как вы думаете про 0.123 и 12.0, можно сделать, чтобы они были как 123 и 12, но выполнив с ними операцию, ответ выйдет как с 0.123 и 12.0, то есть неправильный.

Добавлено через 17 минут
Стойте, а может методом переведения текста в значение. Подождите.
0
840 / 498 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
24.08.2015, 11:21 4
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от Wyctpujla Посмотреть сообщение
Но есть ли способ поизящьнее, тем более, что пользователь может ввести какое угодно длинное число.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <iostream>
#include <boost/regex.hpp>
#include <boost/multiprecision/cpp_int.hpp>
 
namespace mp = boost::multiprecision;
 
int main()
{
    std::string number;
    std::cin >> number;
    std::string pattern = "(\\d+)\\.(\\d+)";
    boost::smatch result;
    if (boost::regex_match (number, result, boost::regex (pattern)))
    {
        mp::cpp_int one = boost::lexical_cast<mp::cpp_int> (result[1]);
        mp::cpp_int two = boost::lexical_cast<mp::cpp_int> (result[2]);
        std::cout << one << "\n" << two << "\n";
    }
    else
    {
        std::cout << "Некорректная строка\n";
    }
}
0
Kerry_Jr
24.08.2015, 11:32     Получение целой и дробной части для десятичной дроби
  #5

Не по теме:

MicM, здесь вполне хватило бы методов класса string.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2015, 11:32

Напечатайте значения переменной Р в формате три позиции для целой части и две для дробной
Люди, помогите, пожалуйста, с составлением кода. А задание такое: Напечатайте значения...

Дано положительное вещественное число Х. Определить, равна ли первая цифра его дробной части последней цифре целой части
Дано положительное вещественное число Х. Определить, равна ли первая цифра его дробной части...

Написать функцию для определения наличия в файле чисел, у которых сумма цифр целой и дробной части равны
2)Дан текстовый файл с неизвестным количеством вещественных чисел. Написать функцию для...

Вывод целой и дробной части
&quot;Вводятся числитель и знаменатель дроби. Вывести: знак, целую часть, сокращенные числитель и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru