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

Перевести простую пробь в десятичную - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод дихотомии (как метод оптимизации) http://www.cyberforum.ru/cpp-beginners/thread84831.html
Нужно написать программу решения метода дихотомии (как метод оптимизации) на С++.А я в С++ новичок, многого не знаю. Пожалуйста, помогите кто-нибудь! Буду очень благодарна!
C++ Массивы Товарисчи программисты помогите мне решить 2 задачи ....оч нужно ...=( <---грустный смайл )) Задача 1 )В одномерном массиве, состоящем из 25 вещественных элементов, вычислить: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных между первым и последним положительными элементами. Преобразовать массив таким образом, чтобы сначала располагались все элементы равные... http://www.cyberforum.ru/cpp-beginners/thread84827.html
Проверка введенного числа на чётность C++
Написать программу, которая проверяет, является ли введенное пользователем целое число четным. Хэлп ми плз )
C++ Среднее геометрическое положительных членов.
Помогите пожалуйста! Дан моссив. Найти среднее геометрическое положительных членов. и вывести на экран.
C++ Отсортировать массив методом Шелла http://www.cyberforum.ru/cpp-beginners/thread84815.html
Здравствуй, помогите пожалуйста решить! Отсортировать массив, не упорядоченый ни по неубыванию, ни по невозрастанию с помощью сортировки методом Шелла.
C++ Значения трех функций. В С++ Вычислить и вывести на экран в виде таблицы значения трех функций (см. свой вариант) на интервале от хнач до хкон с шагом dx. Значения аргумента и функций хранить в двухмерном массиве. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента и соответствующие значения функций. y=(sqrt(x-1)+pow(x-1,1./6))/pow(x-1,1./3) 2 3 4 5 ... подробнее

Показать сообщение отдельно
Somebody
2779 / 1593 / 142
Регистрация: 03.12.2007
Сообщений: 4,175
Завершенные тесты: 1
08.09.2012, 23:47     Перевести простую пробь в десятичную
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
 
class RepeatingDecimal
{
public:
    typedef unsigned number_type;
    RepeatingDecimal(number_type numerator, number_type denominator);
    friend std::ostream& operator<<(std::ostream& out, const RepeatingDecimal& repeatingDecimal);
private:
    std::string resultAsString;
};
 
RepeatingDecimal::RepeatingDecimal(number_type numerator, number_type denominator)
{
    std::ostringstream sout;
    sout.exceptions(std::ostringstream::badbit | std::ostringstream::failbit);
    sout << numerator / denominator;
    numerator %= denominator;
    if (numerator != 0)
    {
        sout << '.';
        std::vector<number_type> digits, remainders{numerator};
        while (true)
        {
            numerator *= 10;
            digits.push_back(numerator / denominator);
            numerator %= denominator;
            auto repetitionStartRem =
                std::find(remainders.begin(), remainders.end(), numerator);
            if (repetitionStartRem != remainders.end())
            {
                auto repetitionStart =
                    digits.begin() + (repetitionStartRem - remainders.begin());
                std::copy(
                    digits.begin(), repetitionStart,
                    std::ostream_iterator<number_type>(sout)
                    );
                sout << '(';
                std::copy(
                    repetitionStart, digits.end(),
                    std::ostream_iterator<number_type>(sout)
                    );
                sout << ')';
                break;
            }
            remainders.push_back(numerator);
        }
    }
    resultAsString = sout.str();
}
 
std::ostream& operator<<(std::ostream& out, const RepeatingDecimal& repeatingDecimal)
{
    return out << repeatingDecimal.resultAsString;
}
 
int main(int argc, char* argv[])
{
    using namespace std;
 
    if (argc < 3)
    {
        cerr << "Error: too few arguments" << endl;
        return 1;
    }
 
    istringstream argin;
    unsigned numerator, denominator;
    argin.str(argv[1]);
    argin >> numerator;
    if (!argin || argin.peek() != istringstream::traits_type::eof())
    {
        cerr << "Error: invalid argument: " << argv[1] << endl;
        return 1;
    }
    argin.clear();
    argin.str(argv[2]);
    argin >> denominator;
    if (!argin || argin.peek() != istringstream::traits_type::eof())
    {
        cerr << "Error: invalid argument: " << argv[2] << endl;
        return 1;
    }
    cout << RepeatingDecimal(numerator, denominator);
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru