Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 353, средняя оценка - 4.87
I_like_C++
28 / 28 / 4
Регистрация: 15.03.2010
Сообщений: 146
Завершенные тесты: 1
#1

Выделение дробной части из числа - C++

12.09.2010, 15:20. Просмотров 46926. Ответов 16
Метки нет (Все метки)

Дано число, например, х=124,556
нужно найти его целую и дробную части, чтобы получилось так:
int a(целая),b(дробная)
а=124
b=556

С целой частью проблем нет, а вот как получить дробную часть я не знаю
Помогите, пожалуйста
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2010, 15:20     Выделение дробной части из числа
Посмотрите здесь:

Наличие введенной цифры в дробной части числа C++
C++ Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
C++ Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.програма на С++
C++ Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.Програма на С++
C++ Классы. Вывести значение числа цифр в дробной части числа
C++ Вывести старшую цифру дробной части и младшую цифру целой части числа
C++ Преобразование целочисленного представления дробной части числа в действительное число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
12.09.2010, 15:33     Выделение дробной части из числа #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
#include <cmath>
float modf(float num, float *i)
Функция modf() раскладывает число num на целую и дробную части. Функция возвращает дробную часть, а целая часть сохраняется в переменной, на которую ссылается указатель i.
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
12.09.2010, 15:35     Выделение дробной части из числа #3
I_like_C++, прежде всего нужно с точностью определиться, с которой эта самая дробная часть вычисляется
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <math.h>
 
int main(void){
    double dbl = 123.456789;
    int precision = 3; // количество знаков после запятой
    int whole = (int)dbl;
    int fractional = (int)( ( dbl - floor(dbl) ) * pow(10, precision) );
    printf("Double: %f\nWhole: %d\nFractional: %d\n", dbl, whole, fractional);
    printf("Precision: %d digits after point.\n", precision);
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Mayonez Посмотреть сообщение
Функция modf()
спасибо, буду знать...
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 15:54     Выделение дробной части из числа #4
easybudda, что будет с отрицательными числами? modf спас бы в такой ситуации
I_like_C++
28 / 28 / 4
Регистрация: 15.03.2010
Сообщений: 146
Завершенные тесты: 1
12.09.2010, 16:04  [ТС]     Выделение дробной части из числа #5
можешь все это записать в коде?
у меня какая- то ошибка типа этой "error C2100: illegal indirection"
и мне желательно не float , a double

и как указатель на число поставить?))
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 16:05     Выделение дробной части из числа #6
и еще, если количество цифр в дробной части меньше точности, то получается что-то несуразное.
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,908
12.09.2010, 16:08     Выделение дробной части из числа #7
Цитата Сообщение от I_like_C++ Посмотреть сообщение
Дано число, например, х=124,556
нужно найти его целую и дробную части, чтобы получилось так:
int a(целая),b(дробная)
а=124
b=556

С целой частью проблем нет, а вот как получить дробную часть я не знаю
Помогите, пожалуйста
А какое значение в b ты хочешь получить, если дробь бесконечная периодическая, типа 3.(3)?
easybudda
Эксперт С++
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
12.09.2010, 17:01     Выделение дробной части из числа #8
Цитата Сообщение от fasked Посмотреть сообщение
и еще, если количество цифр в дробной части меньше точности, то получается что-то несуразное.
0 на 1000 умножится, что ещё будет? (ну, если числа положительные, про отрицательные я не подумал). А, понял, о чём Вы: смущает, что от числа 2,1 дробная часть 100 получится? Да не, сто тысячных, всё правильно...
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 17:19     Выделение дробной части из числа #9
Цитата Сообщение от easybudda Посмотреть сообщение
А, понял, о чём Вы: смущает, что от числа 2,1 дробная часть 100 получится? Да не, сто тысячных, всё правильно...
ну понятное дело, что это одно и тоже, так что именно смущает
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
12.09.2010, 17:30     Выделение дробной части из числа #10
Извините если не в кассу :



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
25
26
27
#include <iostream>
using namespace std;
 
class Decompose
{
    int whole; 
    double frac;
 
public:
    void GetParts(double n)
    {
        whole = (int) n;
        double frac = n - whole;
        cout << whole << endl;
        cout << frac << endl;
    }
};
 
int main()
{
    Decompose obj;
double f;
 
obj.GetParts(10.125);
 
system("pause");
}
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,908
12.09.2010, 17:41     Выделение дробной части из числа #11
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Извините если не в кассу:

Да, класс тут очень в тему *ирония*

Почему не шаблонный? Где реализация паттерна MVC? Непорядок же....
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
12.09.2010, 22:34     Выделение дробной части из числа #12
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Извините если не в кассу :
а сама идея правильная
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main()
{
   double c, b;
   int a;
   std::cin>>c;
   a=(int)c;
   b=c-a;
   std::cout<<a<<" "<<b;
   return 0;
}
fasked
Эксперт C++
4932 / 2512 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2010, 22:37     Выделение дробной части из числа #13
Цитата Сообщение от Mayonez Посмотреть сообщение
а сама идея правильная
Кроме того, что дробную часть по заданию надо сохранить в int.
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
12.09.2010, 22:58     Выделение дробной части из числа #14
тогда записать все число в масив
пока не встретится запятая считать в первый масив(целая часть)
потом считать во второй масив (дробная часть)
потом преобразовать в число



или если фиксированое количество цифр после запятой умножить b на 10 в необходимой степени
gosho
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 10
27.09.2011, 16:34     Выделение дробной части из числа #15
Ребят а вот такой вопрос..

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
25
26
27
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    system("chcp 1251");
    clrscr();
    double RoadS, CarFuelRasxod, FuelCost, RideCost;
 
    cout << "Вычисление стоимости поездки в пункт назначения и обратно.\n"
         << "\nВведите исходные данные:\n"
         << "Расстояние до пункта назначения (км) -> ";
    cin >> RoadS;
    cout << "Расход бензина (литров на 100 км пробега) -> ";
    cin >> CarFuelRasxod;
    cout << "Цена одного литра топлива (руб.) -> ";
    cin >> FuelCost;
 
    RideCost = (CarFuelRasxod/100) * (2*RoadS) * FuelCost;
 
    cout << "Поездка в пункт назначения и обратно обойдется в " << RideCost << "руб.\n";
 
    getch();
    return 0;
}
Так вот если ввести исх.данные:
30.00001
10.00005
23.59
то ответ будет 141.541. А на самом деле д.б. 141.54075488.
как добиться этого? почему по умолчанию идет округление до 3-го знака?
Или например 1+1=2. А если я хочу чтоб вывелось 2.000 то как поступить?
Прошу не писать примеры с printf(). Привык уже с cout и cin.
Интересует тип double и float.
I_like_C++
28 / 28 / 4
Регистрация: 15.03.2010
Сообщений: 146
Завершенные тесты: 1
03.11.2011, 13:51  [ТС]     Выделение дробной части из числа #16
Цитата Сообщение от gosho Посмотреть сообщение
Ребят а вот такой вопрос..
Так вот если ввести исх.данные:
30.00001
10.00005
23.59
то ответ будет 141.541. А на самом деле д.б. 141.54075488.
как добиться этого? почему по умолчанию идет округление до 3-го знака?
Или например 1+1=2. А если я хочу чтоб вывелось 2.000 то как поступить?
Прошу не писать примеры с printf(). Привык уже с cout и cin.
Интересует тип double и float.
используй стандартную библиотеку <iomanip> - реализует инструменты для работы с форматированием вывода, например базу, используемую при форматировании целых и точных значений чисел с плавающей запятой. википедия

вот примерненький код
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
25
26
27
#include <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(0, "rus");
 
    double RoadS, CarFuelRasxod, FuelCost, RideCost;
    
    cout << "Вычисление стоимости поездки в пункт назначения и обратно.\n"
        << "\nВведите исходные данные:\n"
        << "Расстояние до пункта назначения (км) -> ";
    cin >> RoadS;
    cout << "Расход бензина (литров на 100 км пробега) -> ";
    cin >> CarFuelRasxod;
    cout << "Цена одного литра топлива (руб.) -> ";
    cin >> FuelCost;
 
    RideCost = (CarFuelRasxod/100) * (2*RoadS) * FuelCost;
 
    cout<< "Поездка в пункт назначения и обратно обойдется в " <<//setiosflags(ios::fixed);
           std::fixed<<setprecision(8)<< RideCost << "руб.\n";
 
    system("pause");
    return 0;
}
std::fixed и setiosflags(ios::fixed);
в приницпе одно и тоже и без fixed вместо 12.345 (3 цифры после точки) было бы выведено 12.3 (всего 3 цифры)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2016, 09:10     Выделение дробной части из числа
Еще ссылки по теме:

C++ Отделение целой части числа от дробной
C++ Последовательность в дробной части вещественного числа
Отделение дробной части от числа C++
C++ Отбрасывание дробной части числа при делении
Определить равна ли сумма k цифр дробной части заданного вещественного числа сумме цифр целой части C++

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

Или воспользуйтесь поиском по форуму:
Maslina
4 / 4 / 2
Регистрация: 26.01.2016
Сообщений: 29
Завершенные тесты: 3
14.12.2016, 09:10     Выделение дробной части из числа #17
Извиняюсь за запоздание. Но мне кажется автору нужно сделать так. Знак поместить в чар, тогда запишется по отдельности в 2 переменные. И оба числа int.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
void main()
{
char charr;
int a,b;
cin>>a>>charr>>b;
cout<<a<<"|"<<b;
system("pause");
}
Yandex
Объявления
14.12.2016, 09:10     Выделение дробной части из числа
Ответ Создать тему
Опции темы

Текущее время: 19:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru