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

Ќе работает цикл for - C++

¬осстановить пароль –егистраци€
 
vyachesmine
7 / 7 / 1
–егистраци€: 19.02.2013
—ообщений: 22
10.03.2014, 22:10     Ќе работает цикл for #1
¬сем привет! Ќеобходимо было написать реализацию RSA, однако возникли проблемы с циклом for:
C++
1
2
for (i=2; i<=funcN; i++)
    if ((evklid(i,funcN) == 1) and (fmod(i,funcN) != 0)) k_open = i;
ѕолный исходник:
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
#include <iostream.h>
#include <locale.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
int evklid(int a, int b)
{
    int min,max,ost;
    if (a < b)
    {
          min = a;
          max = b;
    }
    else
    {
        min = b;
        max = a;
    }
    while (ost != 0 )
    {
          ost = max % min;
          max = min;
          min = ost;
    }
    return max;
}
int main()
{
    setlocale(LC_ALL,".1251");
    srand(time(NULL));
    char  simbol[2];
    char abc[]= "√А√Б√В√Г√Д√Е¬®√Ж√З√И√Й√К√Л√М√Н√О√П√Р√С√Т√У√Ф√Х√Ц√Ч√Ш√Щ√Ъ√Ы√Ь√Э√Ю√Я";
    int text[4];
    int M[4];
    int C[4];
    int P,Q,N,k_open,k_secret,i,funcN;
    P = 3;
    Q = 11;
    N = P*Q;
    funcN = (P - 1) * (Q - 1);
    for (i=2; i<=funcN; i++)
    if ((evklid(i,funcN) == 1) and (fmod(i,funcN) != 0)) k_open = i;                  
    cout << k_open << endl;
    k_secret = 3;
    text[0] = 30;
    text[1] = 2;
    text[2] = 21;
    //√Ш√®√і√∞√Ѓ√Ґ√*√*√®√• √±√Ѓ√Ѓ√°√є√•√*√®√њ
    cout << "√З√*√Є√®√і√∞√Ѓ√Ґ√*√*√*√Ѓ√• √±√Ѓ√Ѓ√°√є√•√*√®√•: " << endl;
    for (i=0; i<=2; i++)
    {
      C[i] = fmod(pow(text[i],k_open),N);
      cout << C[i];
    }
    cout << endl;
    //√Д√•√Є√®√і√∞√Ѓ√Ґ√*√*√®√• √±√Ѓ√Ѓ√°√є√•√*√®√њ
    cout << "√Д√•√Є√®√і√∞√Ѓ√Ґ√*√*√*√Ѓ√• √±√Ѓ√Ѓ√°√є√•√*√®√•: " << endl;
    for (i=0; i<=2; i++)
    {
      M[i] = fmod(pow(C[i],k_secret),N);
      cout << M[i] << " ";
    }
    cout << endl;  
    system("pause");
    return 0;
}
ѕроблема в том, что цикл останавливает на заданном значении. ѕосоветуйте как исправить
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
10.03.2014, 22:10     Ќе работает цикл for
ѕосмотрите здесь:

C++ Ќе работает цикл
Ќе работает цикл C++
C++ Ќе работает цикл while
C++ Ќе работает цикл
C++ Ќе работает цикл
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Ёксперт —++
4378 / 3221 / 297
–егистраци€: 19.02.2013
—ообщений: 9,044
10.03.2014, 22:42     Ќе работает цикл for #2
÷итата —ообщение от vyachesmine ѕосмотреть сообщение
что цикл останавливает на заданном значении.
что за заданное значение?  огда пишите цикл, используйте блок {} дл€ исключени€ недоразумений.
vyachesmine
7 / 7 / 1
–егистраци€: 19.02.2013
—ообщений: 22
10.03.2014, 22:46  [“—]     Ќе работает цикл for #3
Tulosba, цикл останавливаетс€ на i=2.
Tulosba
:)
Ёксперт —++
4378 / 3221 / 297
–егистраци€: 19.02.2013
—ообщений: 9,044
10.03.2014, 22:53     Ќе работает цикл for #4
÷итата —ообщение от vyachesmine ѕосмотреть сообщение
цикл останавливаетс€ на i=2.
ј чему равно funcN при этом?
vyachesmine
7 / 7 / 1
–егистраци€: 19.02.2013
—ообщений: 22
10.03.2014, 23:08  [“—]     Ќе работает цикл for #5
Tulosba, 20
kiborgdelto
70 / 72 / 27
–егистраци€: 23.03.2011
—ообщений: 141
10.03.2014, 23:23     Ќе работает цикл for #6
ошибка происходит в функции evklid(int a, int b), ты используешь в цикле while (ost != 0 ) переменную ost котора€ не определена, из-за этого и происходит ошибка: условие не может проверитьс€, либо определи эту переменную при задании int min,max,ost=1; либо используй цикл do-while()

ƒобавлено через 14 минут
и ещЄ такой вопрос это так и должно быть? (сам алгоритм незнаю поэтому и спрашиваю)
в результате работы программы k_open принимает своЄ последнее возможное значение (при i=19) а все возможные остальные значени€ игнорируютс€ (условие выполн€етс€ при i=3, i=7, i=9, i=11, i=13, i=17 и i=19)
vyachesmine
7 / 7 / 1
–егистраци€: 19.02.2013
—ообщений: 22
11.03.2014, 23:16  [“—]     Ќе работает цикл for #7
kiborgdelto, как раз при i=3, i=7, i=9, i=11, i=13, i=17 и i=19 должно срабатывать, т.е. уже на i=3
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
11.03.2014, 23:32     Ќе работает цикл for
≈ще ссылки по теме:

C++ ÷икл не работает
C++ Ќе работает цикл for
Ќе работает цикл while() C++

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

»ли воспользуйтесь поиском по форуму:
kiborgdelto
70 / 72 / 27
–егистраци€: 23.03.2011
—ообщений: 141
11.03.2014, 23:32     Ќе работает цикл for #8
программа срабатывает при всех перечисленных i, но после окончани€ работы цикла в результате получаем последнее доступное значение счЄтчика i, если нужно остановитьс€ после 1-го срабатывани€ нужно добавить оператор прерывани€ break

C++
1
2
3
4
 if ((evklid(i,funcN) == 1) and (fmod(i,funcN) != 0)) {
k_open = i;
break;
}
Yandex
ќбъ€влени€
11.03.2014, 23:32     Ќе работает цикл for
ќтвет —оздать тему
ќпции темы

“екущее врем€: 00:39. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru