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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчет количества разных символов в строке http://www.cyberforum.ru/cpp-beginners/thread1812820.html
в строке, вводимой пользователем, подсчитать количество разных символов. сделать при помощи string.h была идея сделать счетчик, который увеличивался при найденом совпадениив предложении. числа от...
C++ Перегрузить операции для пользовательского класса Point Есть класс Point. Нужно сделать для него перегрузки: 1) операции ++ (--) одновременно увеличивает (уменьшает) значения полей х и y на 1; 2) констант true и false: обращение к экземпляру класса дает... http://www.cyberforum.ru/cpp-beginners/thread1812819.html
C++ Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X
Дан массив X, размером 5. Вычислить значения функции y = -0,5 ln (x) при значениях аргумента, заданных в массиве X, и поместить их в массив У. Напечатать результат в виде двух столбцов. Ребят, кто...
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 {...
C++ Вывод из массива символов Дан массив символов.Вывести на экран последовательность символов, что расположена между скобок Я полный ноль в этой теме. Подскажите как это сделать. Вот мой недокод. Пытался делать с помощью... подробнее

Показать сообщение отдельно
smoki
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 8

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

24.09.2016, 15:05. Просмотров 242. Ответов 6
Метки (Все метки)

Добрый день всем!

Очень необходимы светлые мозги, ибо не могу понять в чем проблема.
Есть работающая программа:

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
#include <iostream>
#include <conio.h>
#include <stdio.h>
#define N 100
#define start 1
using namespace std;
 
void main()
{
    system("cls");
    long int a1,a2;
    long int res1,res2;
    long int c1,c2;
    a1=start;
    a2=a1+N;
    res1=(a2+2)/5;
    res2=(a2+4)/6;
    
    long i,j,q,z,z1,z2,r,g,a;
    long 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++)//3
        {
            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]);
    }
    getch();
}
но максимальное N в #define N задается что-то с 9 нулями. Хочу взять больше. Подключаю мат.библиотеку и пробую переписать прогу так

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
#include "ttmath\ttmath.h"
#include <iostream>//7 proverka proshla
#include <conio.h>
#include <stdio.h>
using namespace std;
using namespace ttmath;
#define N 100
#define start 1
 
typedef Big<4, 256> BigNum; 
 
void main()
{
    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]);
    }
    getch();
}
Пограма начинает ругаться уже на строке nums[i-start+1]=10*i+8; подчеркивая знак умножения (*) и далее во всех строчках, где он присутствует.

Подскажите,пожалуйста, в чем проблема.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru