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

Вывести последовательность из цифр огромного числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массив длиной 10 разделить на два массива четных и нечетных чисел http://www.cyberforum.ru/cpp-beginners/thread952317.html
массив длиной 10 разделить на два массива четных и нечетных чисел #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include <iostream> #include <ctime> #include <iomanip>
C++ Найти произведение нечетных чисел, делящихся на 3 ввести с клавиатуры 10 элементов массива , отсортироваь их по убыванию ,сложить все четные и не четные ,найти произведение нечетных чисел делящихся на 3 http://www.cyberforum.ru/cpp-beginners/thread952311.html
C++ Выполнить программу с использованием пользовательских функций
Помогите переписать данную программу, но уже с использованием пользовательских функций. #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <math.h> #include <tchar.h> void main(void) {
Вводятся числа, пока не вводится 0, если его ввели, то программа вычисляет сумму всех введённых чисел C++
в компьютер вводятся числа, пока не вводится 0, если его ввели, то программа вычисляет сумму всех введённых чисел
C++ Посчитать сумму n чисел http://www.cyberforum.ru/cpp-beginners/thread952289.html
Пожалуйста напишите программу, которая будет считать сумму n-чисел.
C++ Найти сумму ряда помогите составить... a=(1+y)*x+y/x(2)+4/y(x-2)+1/x(2)+4 при x=3.26 p.s в скобках степень подробнее

Показать сообщение отдельно
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
11.09.2013, 13:16     Вывести последовательность из цифр огромного числа
Задание во вложении.

Собственно код:
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
#include <iostream>
#include <math.h>
 
using namespace std;
double factorial(int to);
double exponential(int to, int basis);
 
int main()
{
    int i=1;
    double mantiss, whole;
 
    double toOutput = exponential(40, 2);
    
    cout << toOutput << '\n';
 
    while(true)
        {
            toOutput = toOutput / 10;
            mantiss = modf(toOutput, &whole);
            cout << (mantiss * 10) << '\n';
            toOutput = toOutput - mantiss;
            if(toOutput<1)
                break;
            i++;
        }
    cout << '\n' << i << '\n';
    return 0;
}
double factorial(int to)
{
    double factor = 1;
    for (int i = 1; i <= to; i++)
    {
        factor = factor * i;
    }
    return factor;
}
 
double exponential(int to, int basis)
{
    double expon = 1;
    for (int i = 1; i <= to; i++)
    {
        expon *= basis;
    }
    return expon;
}
Работает правильно только до 12 знака, затем идут помехи погрешности, вместо 7 - 7.0001, вместо 6 - 6.00006. Знаю, что это из-за особенности хранения чисел с плавающей точкой, но как можно сделать по другому, чтобы было точно?
В коде там считается 2^40 и уже есть погрешность, а по заданию надо 100! - 2^100, а это ~9 * 10^157, там только 16 значащих цифр отображается, а остальное заполняется нулями. Что делать?
Миниатюры
Вывести последовательность из цифр огромного числа  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru