С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Определить равна ли сумма k цифр дробной части заданного вещественного числа сумме цифр целой части - C++
Помогите доделать задание, исправьте пожалуйста код!!! Срочно! Задание: Выполнить задания, выделяя цифры числа, хранящегося в переменной...

Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части - C++
Нада написать 2 программки 1. Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной...

Классы. Вывести значение числа цифр в дробной части числа - C++
#include "stdafx.h" #include <locale.h> #include <conio.h> #include <iostream> using namespace std; class Chislo { ...

Вывести старшую цифру дробной части и младшую цифру целой части числа - C++
Искал у вас, не нашел. Я новичок в этом деле, если вам не трудно напишите полностью решение ща контрольная ( 31. Даны натуральные...

Отделение дробной части от числа - C++
у меня такое задание: Функци принимает в себя дробное число и возвращает только его дробную часть мне нужно вывести на экран только...

Отделение целой части числа от дробной - C++
деление любое дробное число например: 12.34 и эту цифру надо делить что бы в одном строке было написано 12,34 (то что мы набрали) ...

16
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
12.09.2010, 15:33 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
#include <cmath>
float modf(float num, float *i)
Функция modf() раскладывает число num на целую и дробную части. Функция возвращает дробную часть, а целая часть сохраняется в переменной, на которую ссылается указатель i.
5
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
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()
спасибо, буду знать...
1
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.09.2010, 15:54 #4
easybudda, что будет с отрицательными числами? modf спас бы в такой ситуации
1
I_like_C++
29 / 29 / 4
Регистрация: 15.03.2010
Сообщений: 146
Завершенные тесты: 1
12.09.2010, 16:04  [ТС] #5
можешь все это записать в коде?
у меня какая- то ошибка типа этой "error C2100: illegal indirection"
и мне желательно не float , a double

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

С целой частью проблем нет, а вот как получить дробную часть я не знаю
Помогите, пожалуйста
А какое значение в b ты хочешь получить, если дробь бесконечная периодическая, типа 3.(3)?
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,872
12.09.2010, 17:01 #8
Цитата Сообщение от fasked Посмотреть сообщение
и еще, если количество цифр в дробной части меньше точности, то получается что-то несуразное.
0 на 1000 умножится, что ещё будет? (ну, если числа положительные, про отрицательные я не подумал). А, понял, о чём Вы: смущает, что от числа 2,1 дробная часть 100 получится? Да не, сто тысячных, всё правильно...
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.09.2010, 17:19 #9
Цитата Сообщение от easybudda Посмотреть сообщение
А, понял, о чём Вы: смущает, что от числа 2,1 дробная часть 100 получится? Да не, сто тысячных, всё правильно...
ну понятное дело, что это одно и тоже, так что именно смущает
0
TheMachinist
244 / 176 / 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");
}
3
NightmareZ
1361 / 570 / 37
Регистрация: 31.03.2009
Сообщений: 1,954
12.09.2010, 17:41 #11
Цитата Сообщение от NikolaWhite Посмотреть сообщение
Извините если не в кассу:

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

Почему не шаблонный? Где реализация паттерна MVC? Непорядок же....
0
Mayonez
380 / 272 / 21
Регистрация: 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;
}
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
12.09.2010, 22:37 #13
Цитата Сообщение от Mayonez Посмотреть сообщение
а сама идея правильная
Кроме того, что дробную часть по заданию надо сохранить в int.
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
12.09.2010, 22:58 #14
тогда записать все число в масив
пока не встретится запятая считать в первый масив(целая часть)
потом считать во второй масив (дробная часть)
потом преобразовать в число



или если фиксированое количество цифр после запятой умножить b на 10 в необходимой степени
0
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.
0
27.09.2011, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 16:34
Привет! Вот еще темы с ответами:

Последовательность в дробной части вещественного числа - C++
Верно ли, что первые n цифр дробной части заданного по-ложительного вещественного числа образуют возрастающую последовательность? ...

Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.Програма на С++ - C++
Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.Програма на С++.Нужна полная...

Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.програма на С++ - C++
Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.Програма на С++.ПОЖАЛУЙСТА...

Отбрасывание дробной части числа при делении - C++
double x = 5 / 2; cout &lt;&lt; x; выводит не 2.5, а 2 в чем дело? как исправить? помогите плиз :(


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.