Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Софт виснет // генератор паролей


Автор: VOX 22.6.2009, 10:32
Код

int num;
    int i=1;
    srand(time(NULL));
    char char_arr[64]={"zAyBxCwDvEuFtGsHrIqKpLoMnNmOlPkQjRiShTgUfVeWdXcYbZa1928374560!-"};
    while (i==1)
    {
    num = StrToInt (Edit1->Text);
    for (int i=0; i<num; i++)
    Label1->Caption = (char_arr[rand() % 63]);
    }

    }


Сабж, виснет, подскажите что не так?

Автор: mrbrooks 22.6.2009, 10:36
Цитата(VOX @  22.6.2009,  10:32 Найти цитируемый пост)
Сабж, виснет, подскажите что не так? 

бесконечный цикл

Автор: VOX 22.6.2009, 10:47
в едите ввожу пятерку, ведь он должен остановиться...

Автор: Dmi3ev 22.6.2009, 10:49
Цитата

в едите ввожу пятерку, ведь он должен остановиться... 

почему?  smile

Добавлено через 1 минуту и 20 секунд
вот этот создает бесконечность:
Цитата

while (i==1)

а не
Цитата

for (int i=0; i<num; i++)

он-то, ясен пень, кончится...

Автор: mrbrooks 22.6.2009, 10:52
VOX,  smile 

Автор: azesmcar 22.6.2009, 10:53
VOX

Обратите внимание на то что во втором цикле for ваш обявленный int i перекрывает верхний.
Код

int i = 1;
while (i == 1)
{
    //тут i == 1
    for (int i = 0; i < 10; ++i)
    {
             //тут i меняет значение от 0 до 9
    }
    //тут i == 1
}

i в первом цикле и во втором - разные.

Автор: Данкинг 22.6.2009, 10:55
Цитата(VOX @  22.6.2009,  11:32 Найти цитируемый пост)
что не так? 

Одна и та же переменная в разных циклах - это уже "не так". smile 

Автор: VOX 22.6.2009, 10:58
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int num;
    int i=1;
    AnsiString str;
    srand(time(NULL));
    char char_arr[64]={"zAyBxCwDvEuFtGsHrIqKpLoMnNmOlPkQjRiShTgUfVeWdXcYbZa1928374560!-"};
    num = StrToInt (Edit1->Text);
    for (int i=0; i<num; i++)
    {
    str += (char_arr[rand() % 63]);
    }
    Label1-> Caption =  str;

    }


сделал так, спасибо!

Автор: Dmi3ev 22.6.2009, 11:02
Цитата

Label1->Caption = (char_arr[rand() % 63]);

эта строка тоже достаточно чудна, из массива случайным образом берется символ и запихивается в Label1, т.е. получается что в нем будет только символ, полученный последним... нах такое нужно??? я не понял  smile 
Может, автор хотел получить весь пароль, а не 1 символ...

Добавлено через 30 секунд
Цитата

    for (int i=0; i<num; i++)
    {
    str += (char_arr[rand() % 63]);
    }
    Label1-> Caption =  str;


вот, так пойдет

Автор: VOX 22.6.2009, 11:06
На данный момент, сколько ввожу в едит 1 - из такого кол-ва знаков пароль и получается.
Т.к. всё неплохо работает

Добавлено через 7 минут и 4 секунды
Dmi3ev - на 4 минуты раньше всё же дошло )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)