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

Корень из 2 с точностью до 100 знаков после запятой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рекурсивный спуск http://www.cyberforum.ru/cpp-beginners/thread698600.html
Здравствуйте помогите пожалуйста разобраться в рекурсивном спуске, который вычисляет выражения, и как считывать по одному элементу из файла( #include "stdafx.h" #include "stdlib.h" bool E(); bool T(); bool F(); bool N(); {
C++ Составить блок-схему к программе Народ!помогите блок-схему сделать!((( using namespace std; void enteringData(double*, int); void calculatingAvg(double*, int); void main() { int size = 0; cout<<"Type size of array: "; http://www.cyberforum.ru/cpp-beginners/thread698589.html
C++ Блок-схема
Народ!помогите!кто знает как блок -схему сделать!!? void main() { doublemult=1; ifstream text("text.txt"); while (!text.eof()) { double num; text>>num; cout<<num<<endl; if (num < 0) { mult*=pow(num,2);
Вычислить корни квадратного уравнения C++
вычислить корни квадратного уравнения ax^2 + bx+x=0с за данными коэффициэнтами а b, и с (предпологается, что a\neq 0 то что дискриминант уравнения неотрицателен
C++ 15. В некотором институте информация об имеющихся компьютерах задана двумя деревьями. В первом из них сыновьям корневой вершины соответствуют факу http://www.cyberforum.ru/cpp-beginners/thread698574.html
помогите реализовать пожайлуста программу... 15. В некотором институте информация об имеющихся компьютерах задана двумя деревьями. В первом из них сыновьям корневой вершины соответствуют факультеты, факультеты в свою очередь делятся на кафедры, кафедры могут иметь в своем составе лаборатории. Компьютеры могут быть установлены в общих факультетских классах, на кафедрах, в лабораториях...
C++ является ли разность его максимальной и минимальной цифр четным числом Дано натуральное число.Определить,является ли разность его максимальной и минимальной цифр четным числом подробнее

Показать сообщение отдельно
cruzer121312
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 21
28.11.2012, 01:21  [ТС]     Корень из 2 с точностью до 100 знаков после запятой
Добавлено через 7 минут
Цитата Сообщение от grizlik78 Посмотреть сообщение
Вот с реализацией только необходимых операций. Об эффективности или красоте речи нет, главное было реализовать как можно меньше думая
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <vector>
#include <deque>
 
class Big
{
public:
    void mult10() { if (!v.empty()) v.push_front(0); }
    void add(unsigned char a)
    {
        for (unsigned i = 0; a > 0; ++i)
        {
            if (i >= v.size())
                v.push_back(0);
            v[i] += a % 10;
            a /= 10;
            if (v[i] > 9)
            {
                v[i] -= 10;
                ++a;
            }
        }
    }
    void sub(Big const& a)
    {
        unsigned char c = 0;
        unsigned i;
        for (i = 0; i < a.v.size(); ++i)
        {
            v[i] += 10 - a.v[i] - c;
            if (v[i] >= 10)
            {
                v[i] -= 10;
                c = 0;
            }
            else
                c = 1;
        }
        while (c && i < v.size())
        {
            if (v[i] > 0)
            {
                --v[i];
                c = 0;
            }
            else
                v[i] = 9;
            ++i;
        }
        while (!v.empty() && v.back() == 0)
            v.pop_back();
    }
    bool operator<=(Big const& a) const
    {
        unsigned s = a.v.size();
        if (s != v.size())
            return s > v.size();
        if (v.empty())
            return true;
        while (--s > 0 && a.v[s] == v[s])
            ;
        return v[s] <= a.v[s];
    }
    std::ostream& Print(std::ostream &out) const
    {
        for (unsigned i = v.size(); i > 0; )
            out << (unsigned)v[--i];
        return out;
    }
private:
    std::deque<unsigned char> v;
};
 
std::ostream& operator<<(std::ostream &out, Big const& big)
{
    return big.Print(out);
}
 
std::vector<unsigned char> sqrt(unsigned x, unsigned N)
{
    std::vector<unsigned char> d, g;
    while (x > 0)
    {
        g.push_back(x % 100);
        x /= 100;
    }
    Big b;
    Big c;
    while (N > 0 || !g.empty())
    {
        c.mult10();
        c.mult10();
        if (!g.empty())
        {
            c.add(g.back());
            g.pop_back();
        }
        else
            --N;
        unsigned char a = 0;
        Big b1 = b;
        b1.add(1);
        while (a < 9 && b1 <= c)
        {
            c.sub(b1);
            b1.add(2);
            ++a;
        }
        d.push_back(a);
        b.mult10();
        b.add(a * 20);
    }
    return d;
}
 
int main()
{
    std::cout << "length of the fractional part: ";
    int N;
    std::cin >> N;
    std::cout << "value: ";
    int v;
    std::cin >> v;
 
    std::vector<unsigned char> s = sqrt(v, N);
    int k = s.size() - N;
    std::cout << "sqrt(" << v << ")=";
    for (unsigned i = 0; i < s.size(); ++i)
    {
        if (i == k)
            std::cout << '.';
        std::cout << (unsigned)s[i];
    }
    std::cout << std::endl;
}
Я поражаюсь, как Вы это сделали) Может могли бы прокоментировать в кратце разбив код на части что есть что? К примеру с 8 по 9 строчки, с 11 по 20, с 24 по 52, с 53 по 68, с 70 по 113, с 125 по 134. Спасибо)
 
Текущее время: 04:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru