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

Как реализовать работу с очень большими числами? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчет количества разных символов в строке http://www.cyberforum.ru/cpp-beginners/thread1812820.html
в строке, вводимой пользователем, подсчитать количество разных символов. сделать при помощи string.h была идея сделать счетчик, который увеличивался при найденом совпадениив предложении. числа от 32 до 128 по таблице ASCII означают символ. но довести до ума не могу. и доп. просьба. подскажите годный материал по обучению с++. пока понял матрицы и все, что до них. заранее извиняюсь. первый курс...
C++ Перегрузить операции для пользовательского класса Point Есть класс Point. Нужно сделать для него перегрузки: 1) операции ++ (--) одновременно увеличивает (уменьшает) значения полей х и y на 1; 2) констант true и false: обращение к экземпляру класса дает значение true, если значения полей х и y совпадает, иначе false; 3) операции бинарных +: одновременно добавляет к полям х и у значение скаляра; 4) Преобразование типа Point в string (и наоборот)... http://www.cyberforum.ru/cpp-beginners/thread1812819.html
C++ Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X
Дан массив X, размером 5. Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X, и поместить их в массив У. Напечатать результат в виде двух столбцов. Ребят, кто может помочь объяснить, я не пойму задание Вот что я набросал (там где логарифм горит красным, менял и так, и сяк): #include "stdafx.h" #include "iostream" #include "cmath" #include "conio.h"
C++ Аналог feof для плюсов
Нужно написать цикл while, который считывает, пока не конец файла. В Си есть функция feof. Подскажите аналог для С++.
C++ Вызов метода класса из main http://www.cyberforum.ru/cpp-beginners/thread1812790.html
Как вызвать функцию plus в меин? пробовал вариант р3.=р3.plus(p1,p2), но не получилось #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; class Nexia { protected: int c,m;
C++ Вывод из массива символов Дан массив символов.Вывести на экран последовательность символов, что расположена между скобок Я полный ноль в этой теме. Подскажите как это сделать. Вот мой недокод. Пытался делать с помощью ASCII кодов #include<iostream> #include<string.h> using namespace std; int main() { setlocale (0, "Russian"); подробнее

Показать сообщение отдельно
gru74ik
Модератор
 Аватар для gru74ik
3076 / 1321 / 164
Регистрация: 20.02.2013
Сообщений: 3,757
Записей в блоге: 16
24.09.2016, 19:00     Как реализовать работу с очень большими числами?
Цитата Сообщение от smoki Посмотреть сообщение
максимальное N в #define N задается что-то с 9 нулями. Хочу взять больше.
Стандартными средствами - никак. Подключайте сторонние библиотеки. Boost.Multiprecision, например.

Добавлено через 3 минуты
smoki, ага, Вы так и сделали (подключили ttmath). Прошу прощения, сразу не заметил.

Добавлено через 6 минут
smoki, а простейшие примеры с сайта библиотеки у Вас компилируются?

Добавлено через 7 минут
smoki, Вы слэш не туда завернули. У Вас так:
C++
1
#include <ttmath\ttmath.h>
А надо так:
C++
1
#include <ttmath/ttmath.h>
Добавлено через 11 минут
smoki, и пишет он Вам ошибки, потому что операция [] не перегружена для типа Big. А Вам точно типа unsigned long long не хватит?
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
#include <cstdio>
#include <cstdlib>
 
int main()
{
    const int N = 100;
    const int start = 1;
 
    typedef unsigned long long BigNum;
 
    system("cls");
    BigNum a1,a2;
    BigNum res1,res2;
    BigNum c1,c2;
    a1=start;
    a2=a1+N;
    res1=(a2+2)/5;
    res2=(a2+4)/6;
 
    BigNum i,j,q,z,z1,z2,r,g,a;
    BigNum nums[N];
 
    for (i=start; i<(start + N); i++)
    {
        nums[i-start+1]=10*i+8;
    }
    for (i=1; i<N; i++)
    {
        for (q=1;q<=res1;q++)
        {
            c2=(a2+q+2)/(10*q-8);
            c1=(a1+q+2)/(10*q-8)+1;
 
            for (g=c1;g<c2;g++)
            {
                z=(10*q+8)*g-(q-2);
                if ((z-start+1)<N)
                    nums[z-start+1]=0;
                else
                    break;
            }
        }
        for (q=1;q<=res2;q++)
        {
            c2=(a2+q)/(10*q-6);
            c1=(a1+q)/(10*q-6)+1;
            for (g=c1;g<=c2;g++)
            {
                z=(10*q-6)*g+q;
                if ((z-start+1)<N)
                    nums[z-start+1]=0;
                else
                    break;
            }
        }
 
    }
    for (i=1;i<N;i++)
    {
        printf("%1d element = %1d\n",i,nums[i]);
    }
 
    return 0;
}
 
Текущее время: 23:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru