Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 20
1

Функция: подсчёт количества цифр после запятой в дробном числе

26.01.2019, 12:11. Показов 5252. Ответов 33
Метки нет (Все метки)

Нужно написать функцию подсчёта количества цифр после запятой в дробовом числе и при этом не использовать никак встроеных функций по типу numeric_limits
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2019, 12:11
Ответы с готовыми решениями:

Подсчет количества цифр в числе
как посчитать количество цифр в числе? то есть в числе 45689 - при подсчете получалось 5 цифр. В...

Подсчёт количества цифр в числе
Подсчитать k – количество цифр в десятичной записи целого неотрицательного числа n.

Подсчет количества цифр 5 в числе
Ищет только если один раз 5 в 4-рех значном числе, но если например 4551, щитает только одну , КАК...

Подсчет количества четных цифр в числе
Здравствуйте! Начал изучать PHP и столкнулся с проблемой. Необходимо организовать подсчет четных...

33
29 / 17 / 14
Регистрация: 19.12.2018
Сообщений: 104
26.01.2019, 14:27 2
Такое пойдёт?
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
28
29
#include <iostream>
 
using namespace std;
 
int getCountsOfDigits(long number);
 
int main()
{
    int a;
    double d = 145.666;
    int c = d * 1000;
    a = (c % 1000);
 
    getCountsOfDigits(a);
 
    system("pause");
    return 0;
}
 
int getCountsOfDigits(long number) { // тут с помощью цикла определяем, сколько цифр содержится в числе.
    setlocale(LC_ALL, "rus");
    int count = (number == 0) ? 1 : 0;
    while (number != 0) {
        count++;
        number /= 10;
    }
    cout << "В дробной части числа содержится: " << count << " цифр(ы)" << endl;
    return count;
}
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,053
26.01.2019, 19:30 3
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
28
29
30
31
32
33
34
#include <iostream>
#include <windows.h>
#include <string>
#include <sstream>
#include <algorithm>
 
using namespace std;
 
size_t count_digit(const double &);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color 0A");
    
    cout << "Введите число ";
    double a;
    cin >> a;
    cout << "В числе после запятой " << count_digit(a) << " цифра" << endl;
 
    system("pause");
    return 0;
}
 
size_t count_digit(const double &value)
{
    stringstream ss;
    string s;
    ss << value;
    ss >> s;
    auto ind = s.find('.');
    return s.size() - ind - 1;
}
0
Миниатюры
Функция: подсчёт количества цифр после запятой в дробном числе  
29 / 17 / 14
Регистрация: 19.12.2018
Сообщений: 104
26.01.2019, 19:38 4
Я думаю, твой вариант для него будет несколько сложнее чем мой
0
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 20
26.01.2019, 22:53  [ТС] 5
Мне кажеться ты нашел сколько цифр в целой части.Мне кажеться от getCountsOfDigits(a) нужно отнять count.

Добавлено через 1 час 48 минут
А что если после запятой будет не три цифры а например 7.В твоей програме один минус она не очень точно высчитывает сколько цифр после запятой.
0
Параллельный Кот
1901 / 824 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
26.01.2019, 23:01 6
SomniPhobia, потестируйте свой вариант программы.
Функция: подсчёт количества цифр после запятой в дробном числе
0
1 / 1 / 1
Регистрация: 25.11.2018
Сообщений: 91
26.01.2019, 23:24 7
Цитата Сообщение от Smoug1894 Посмотреть сообщение
Мне кажется от getCountsOfDigits(a) нужно отнять count.
Этого сделать, в принципе, не возможно...
0
Эксперт C
26059 / 16250 / 3492
Регистрация: 24.12.2010
Сообщений: 35,604
26.01.2019, 23:35 8
Знаков после запятой будет столько, с какой точностью вы его выведете. По умолчанию точность вывода double - 5 знаков (кажется). Потому вводить число надо как последовательность символов (char или string). Все остальное - от лукавого.
1
Продавец времени
5779 / 3188 / 732
Регистрация: 12.03.2015
Сообщений: 15,106
27.01.2019, 00:13 9
Шо, неужели опять?



Какой идиот придумал искать то, чего нет?
Для тех, кто в танке, в который раз повторяю: в числе с плавающей точкой (double) нету никаких десятичных разрядов после точки. И быть не может. И не было никогда!

В прошлом году был тут один чудак на букву "м", который задавал этот же вопрос. Срач в комментах знатный был.
3
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,053
27.01.2019, 08:41 10
valen10, взгляните.
Verevkin, Вы правы.
0
Миниатюры
Функция: подсчёт количества цифр после запятой в дробном числе  
0 / 0 / 0
Регистрация: 15.09.2018
Сообщений: 20
28.01.2019, 05:21  [ТС] 11
Допустим что раздрядов в типе double нет.Но я же просил подсчитать не разряды а числа после точки.
0
Продавец времени
5779 / 3188 / 732
Регистрация: 12.03.2015
Сообщений: 15,106
28.01.2019, 08:14 12
Цитата Сообщение от Smoug1894 Посмотреть сообщение
Но я же просил подсчитать не разряды а числа после точки.
Чисел Цифр после точки там тоже нет.
0
Параллельный Кот
1901 / 824 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
28.01.2019, 08:38 13
Цитата Сообщение от Verevkin Посмотреть сообщение
Цифр после точки там тоже нет.
Не могли бы вы дать более развернутый комментарий по этой теме? Или ссылочку на тему, где ранее был знатный срач

Всегда считал, что цифр там при переводе в десятичную СС может быть гораздо больше, чем предполагалось. А вы говорите, что их нет. Как так то.
0
С чаем беда...
Эксперт CЭксперт С++
9139 / 4658 / 1267
Регистрация: 18.10.2014
Сообщений: 10,506
28.01.2019, 08:46 14
Цитата Сообщение от Smoug1894 Посмотреть сообщение
Нужно написать функцию подсчёта количества цифр после запятой в дробовом числе
Задание не имеет никакого смысла, пока не оговорено, каким образом задается это число.
0
Продавец времени
5779 / 3188 / 732
Регистрация: 12.03.2015
Сообщений: 15,106
28.01.2019, 09:46 15
Цитата Сообщение от valen10 Посмотреть сообщение
Не могли бы вы дать более развернутый комментарий по этой теме?
Мне некогда, я на работе.
Цитата Сообщение от valen10 Посмотреть сообщение
Или ссылочку на тему, где ранее был знатный срач
Работа с переменными типа float и double
Но основной срач был на другом форуме.
1
Эксперт C
26059 / 16250 / 3492
Регистрация: 24.12.2010
Сообщений: 35,604
28.01.2019, 10:01 16
Предлагаю простое упражнение.
Возьмем дробное число 3/7. И посчитаем, сколько у него цифр после запятой.
Кто первый посчитает - получит приз. Какой, пока не знаю, но надеюсь, мне хватит времени обдумать этот вопрос.
0
609 / 414 / 151
Регистрация: 11.01.2019
Сообщений: 1,742
28.01.2019, 10:14 17
И какой гений сформулировал такое условие задачи? ))
0
Продавец времени
5779 / 3188 / 732
Регистрация: 12.03.2015
Сообщений: 15,106
28.01.2019, 10:31 18
Цитата Сообщение от Байт Посмотреть сообщение
Кто первый посчитает - получит приз. Какой, пока не знаю, но надеюсь, мне хватит времени обдумать этот вопрос.
Нобелевскую премию.

Функция: подсчёт количества цифр после запятой в дробном числе
0
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,053
28.01.2019, 11:44 19
Цитата Сообщение от Байт Посмотреть сообщение
Предлагаю простое упражнение.
Возьмем дробное число 3/7. И посчитаем, сколько у него цифр после запятой.
С точки зрения математики: У числа 3/7 бесконечное количество цифр после запятой (при делении в остатке никогда нуля не будет). Там ещё период есть (цифры начинают в некий момент повторяться).

Что говорит программа, написанная на C++ (см. код и скрин).
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
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <windows.h>
#include <string>
#include <algorithm>
#include <sstream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("color 0A");
 
    double value = 3/7.;
    stringstream ss;
    string s;
    ss << fixed << setprecision(307u) << value;
    ss >> s;
    cout << s << endl;
 
    long long u = s.size() - 1;
    for (; ; --u)
    {
        if (s[u] != '0')
        {
            break;
        }
    }
    auto it_left = s.begin() + s.find('.');
    s.erase(s.begin() + ++u, s.end());
    s.erase(s.begin(), ++it_left);
    cout << "s = " << s << endl;
    cout << "Я вижу после точки " << s.size() << " цифр" << endl;
 
    system("pause");
    return 0;
}
0
Миниатюры
Функция: подсчёт количества цифр после запятой в дробном числе  
567 / 406 / 132
Регистрация: 22.11.2017
Сообщений: 1,053
28.01.2019, 11:53 20
В имитации числа Пи, после запятой моя программа видет 48 цифр.
C++
1
double value = atan(1.) * 4.;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2019, 11:53

Подсчет количества одинаковых цифр в числе
Программа подсчета одинаковых цифр в числе.

Подсчет количества цифр равных 3 в числе
подсчитать кол-во 3 в целом числеНазывайте темы информативно. Последнее предупреждение.

Подсчет количества цифр в вещественном числе
Насколько я понял, сделать это можно лишь с переводом в строковый тип, а вот сделать никак не могу....

Подсчет количества цифр равных 3 в числе
Вводиться число и в этом числе подсчитать количество цифр равно трем P.S Пожалуйста если не...


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

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

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