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

Biginteger и переменная - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ алгоритм бм http://www.cyberforum.ru/cpp-beginners/thread1047008.html
кто может написать алгоритм БМ
C++ Возврат 2 значений из функции с одним вызовом этой же функции Вообщем где то в какой то игре была хукнута одна функция int function(int arg1,int arg2,int arg3); суть в чем int function(int arg1,int arg2,int arg3) { int retval = 0; // туча кода http://www.cyberforum.ru/cpp-beginners/thread1047001.html
Оператор Goto и ветвление C++
Помогите, пожалуйста, написать программу, которая сперва считывает введенное с клавиатуры число, а потом, если введено одно значение (например 10), то программа выводит 2, если введено другое значение (например, 7), то программа выводит 1, в остальных случаях программа выводит 0, без использования операторов if и switch (goto можно).
C++ Обработка символьного массива
Итак, задание: Без использования конструкции string написать программу ввода и вывода необходимого текста с клавиатуры. Ввод осуществляется до точки. а) Вывести только маленькие латинские символы, пробелы и точку. в) Вывести количество символов в введеном тексте и выведенном. г) Вывести количество слов в выведенном тексте. д) В выведенном тексте заменить на XXX каждое слово из 5 букв,...
C++ Как очистить cin? http://www.cyberforum.ru/cpp-beginners/thread1046926.html
собственно защита от дурака, от пользователя требуется цифра, а он вводит букву, и все следующие cin не работают, cin.clear() не подходит, как реанимировать cin ? Добавлено через 3 минуты std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); вроде бы нашёл решение, но если первыми символами являются цифры, то cin все равно их записывает, как избежать этого?
C++ Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора Вычислить и вывести на экран в виде таблици значения функции, заданной с помощью ряда Тейлора, на интервале от Xнач до Xкон с шагом dx с точностью е. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда по формуле ... подробнее

Показать сообщение отдельно
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
20.12.2013, 12:41  [ТС]     Biginteger и переменная
Вот весь код, фун-ия main в самом низу , необходимо чтобы входное значение переменной p было biginteger
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
#define _CRT_SECURE_NO_WARNINGS
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
 
#pragma hdrstop                  // Предоставляет дополнительный элемент управления по именам файлов предварительной компиляции и над местоположением на котором сохраняется состояние компиляции
 
using namespace std;
 
int power(int a, int b, int n){// a^b mod n
    int tmp=a;
    int sum=tmp;
    for(int i=1;i<b;i++){
        for(int j=1;j<a;j++){
            sum+=tmp;
            if(sum>=n){
                sum-=n;
            }
        }
        tmp=sum;
    }
    return tmp;
}
 
int mul(int a, int b, int n){// a*b mod n
    int sum=0;
     
    for(int i=0;i<b;i++){
        sum+=a;
         
        if(sum>=n){
            sum-=n;
        }
    }
 
    return sum;
}
 
 
void crypt(int p,int g,int x, string inFileName,string outFileName){
 
setlocale( LC_ALL,"Russian" );
    ifstream inf(inFileName.c_str());   //Формирует массив строк  И возвращает указатель на него.
    ofstream outf(outFileName.c_str()); 
    
    int y=power(g,x,p);
    printf("Открытый ключ (p,g,y)=", setlocale(LC_ALL, "Russian"));
    cout<<""<<"("<<p<<","<<g<<","<<y<<")"<<endl;
    cout<<"Закрытый ключ x="<<x<<endl;
    cout<<"Введите текст который необходимо зашифровать\n";
 
 
    while(inf.good()){
        int m=inf.get();
        if(m>0){
            cout<<(char)m;
 
            int k=rand()%(p-2)+1; // 1 < k < (p-1)
            int a= power(g,k,p);
            int b= mul(power(y,k,p),m,p);
            outf<<a<<" "<<b<<" ";
        }
    }
 
    cout<<endl;
 
    inf.close();
    outf.close();
}
 
void decrypt(int p,int x,string inFileName,string outFileName){
    
    ifstream inf(inFileName.c_str());
    ofstream outf(outFileName.c_str());
    setlocale( LC_ALL,"Russian" );
    
    cout<<"\nДешифрованый текст:"<<endl;
 
    while(inf.good()){
        int a=0;
        int b=0;
        inf>>a;
        inf>>b;
 
        if(a!=0&&b!=0){
 
 
            int deM=mul(b,power(a,p-1-x,p),p);// m=b*(a^x)^(-1)mod p =b*a^(p-1-x)mod p 
            char m=static_cast<char>(deM);
        
            outf<<m;
            cout<<m;
        }
    }
 
    cout<<endl;
 
    inf.close();
    outf.close();
}
 
int main(){
    srand(time(NULL));
    setlocale( LC_ALL,"Russian" );
    int p,g,x;          //переделать под biginteger переменную p
    cout<<"Введите p,g,x\n";
    cin>>p>>g>>x;
    crypt(p,g,x, "input.txt","outsh.txt");  
    decrypt(p,x, "outsh.txt","outdesh.txt");
    system("pause");
    return 0;
}
Добавлено через 33 минуты
p - большое целое число, и все, оно не преобразуется ни в стринг ни в какой то ещё тип . Оно задается 1 раз по ходу работы программы и все
 
Текущее время: 03:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru