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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
#1

Ввод данных - C++

14.12.2013, 15:48. Просмотров 299. Ответов 7
Метки нет (Все метки)

Во время работы программы она не видит строку(как я думаю) cout<<"m="<<m<<"";(эта строка находится в функции decrypt) как это исправить? Программа работает


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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <fstream>  
#include <iostream>
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; 
    system("pause");
} 
 
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; 
        } 
    } 
 system("pause");
    return sum; 
} 
 
/***************************************************** 
    p - простое число
    0 < g < p-1
    0 < x < p-1
    m - шифруемое сообщение m < p
*****************************************************/
void crypt(int p,int g,int x, string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str());
    setlocale( LC_ALL,"Russian" );
    cout<<"Введите значения для p,g,x\n";
    cin>>p>>g>>x;
 
    int y=power(g,x,p); 
     
    cout<<"Открытый ключ (p,g,y)="<<"("<<p<<","<<g<<","<<y<<")"<<endl; 
    cout<<"Закрытый ключ x="<<x<<endl; 
     
    cout<<"\nШифруемый текст:"<<endl; 
    char m;
    cin>>m;
    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(); 
    system("pause");
} 
 
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){ 
            //cout<<a<<" "<<b<<endl; 
         
            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="<<m<<"";  
        } 
    } 
     
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
}
 
int main(){
 
    srand(time(NULL));
   setlocale( LC_ALL,"Russian" );
 
    crypt(593,123,8, "in.txt","out_crypt.txt"); 
    decrypt(593,8,"out_crypt.txt","out_decrypt.txt");
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 15:48     Ввод данных
Посмотрите здесь:

Как правильно заменить ввод данных простой на ввод с клавиатуры? - C++
#include &quot;stdafx.h&quot; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) ...

Потоковый ввод и ввод данных. Работа с числами - C++
Ввести с экрана два нат. числа. Найти частное первого на второе и определить, встречается ли среду его дробной части цифра 3( рассматривать...

ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). - C++
Здравствуйте) помогите написать программу, осуществляющую ввод структурированных данных в файл и вывод данных из этого файла на экран...

Ввод данных - C++
В общем есть переменная int year; Юзер должен ввести значение переменной, но мне нужно чтобы он мог ввести максимум четырехзначное число,...

ввод данных - C++
&quot;На вход программе подаётся граф, заданный в виде матрицы смежности &quot; вот такую фразу увидела на примере, я понимаю что данные подаются,...

ввод данных - C++
#include &lt;STDIO.h&gt; #include &lt;CONIO.h&gt; #include &lt;STDLIB.h&gt; #include &lt;IOSTREAM.h&gt; void main(void) { clrscr(); int i; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 15:55     Ввод данных #2
вставляйте код, пожалуйста, в эту штуку:
C++
1
я код
Добавлено через 36 секунд
Цитата Сообщение от oks1d Посмотреть сообщение
Во время работы программы она не видит строку(как я думаю) cout<<"m="<<m<<"";(эта строка находится в функции decrypt) как это исправить?
WAT
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 16:00  [ТС]     Ввод данных #3
Программа хорошо компилируется , вот ход работы
Введите значения p,g,x
ввожу..
ввожу..
ввожу..
Открытый ключ ...бла бла бла
Закрытый ключ бла бла бла..
Шифруемый текст: ввожу..
//затем должно быть написанно дешифруемый текст и вывести то значение которое я зашифровал но выводит на экран просто надпись Дешифрованный текст: (без значения) , оператор вывода у меня в коде есть не пойму в чем дело.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
#include <fstream>  
#include <iostream>
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; 
    system("pause");
} 
 
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; 
        } 
    } 
 system("pause");
    return sum; 
} 
 
/***************************************************** 
    p - простое число
    0 < g < p-1
    0 < x < p-1
    m - шифруемое сообщение m < p
*****************************************************/
void crypt(int p,int g,int x, string inFileName,string outFileName){ 
    ifstream inf(inFileName.c_str()); 
    ofstream outf(outFileName.c_str());
    setlocale( LC_ALL,"Russian" );
    cout<<"Введите значения для p,g,x\n";
    cin>>p>>g>>x;
 
    int y=power(g,x,p); 
     
    cout<<"Открытый ключ (p,g,y)="<<"("<<p<<","<<g<<","<<y<<")"<<endl; 
    cout<<"Закрытый ключ x="<<x<<endl; 
     
    cout<<"\nШифруемый текст:"<<endl; 
    char m;
    cin>>m;
    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(); 
    system("pause");
} 
 
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){ 
            //cout<<a<<" "<<b<<endl; 
         
            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="<<m<<"";  
        } 
    } 
     
    cout<<endl; 
 
    inf.close(); 
    outf.close(); 
    system("pause");
}
 
int main(){
 
    srand(time(NULL));
   setlocale( LC_ALL,"Russian" );
 
    crypt(593,123,8, "in.txt","out_crypt.txt"); 
    decrypt(593,8,"out_crypt.txt","out_decrypt.txt");
    system("pause");
    return 0;
}
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
14.12.2013, 16:05     Ввод данных #4
попробуйте изучить что творится в порграмме, при помощи cout
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 16:21  [ТС]     Ввод данных #5
Цитата Сообщение от Doksim Посмотреть сообщение
попробуйте изучить что творится в порграмме, при помощи cout
В функции crypt все понятно, я непойму почему не работает в функции decrypt

C++
1
 97    cout<<"m="<<m<<"";
nomyac
2 / 9 / 1
Регистрация: 12.10.2013
Сообщений: 43
14.12.2013, 16:49     Ввод данных #6
Не работает как функция зашифровки, так и расшифровки! Поставь переменную m[256] и увидишь, как программа работает.
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 17:04  [ТС]     Ввод данных #7
Вот результат работы
Миниатюры
Ввод данных  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 17:54     Ввод данных
Еще ссылки по теме:

ввод данных - C++
Мне нужно сделать матричный калькулятор. Я у меня не получается создать форму для ввода уравнений(число уравнений не должно быть...

Ввод данных - C++
Народ, Как в С++ сделать чтобы 2 переменные вводились через пробел в одну строчку? Причём чтобы были в диапазоне от 2 до 300 000.

Ввод данных - C++
Такой код &quot;ждёт&quot; пока не введем данные string fam=&quot;&quot;; cout&lt;&lt;&quot;Vvedite Familiy:\n&quot;; cin&gt;&gt;fam; Можно сделать условие, если ничего...

Ввод данных. - C++
Долго оправдываться что совсем начинающий я не буду). Поставил компилятор Dev-C++, решил проверить как работает - написал программку,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
oks1d
4 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
14.12.2013, 17:54  [ТС]     Ввод данных #8
Если кто-то может что подсказать пожалуйсту прошу.
Yandex
Объявления
14.12.2013, 17:54     Ввод данных
Ответ Создать тему
Опции темы

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