Всем привет, вообщем есть у меня в массиве alpha алфавит(сейчас он не полный), так-же есть массив key,нужно в массив key записать все возможные символы с alpha (по 4 символа), так что-бы символы повторялись. Начал писать и столкнулся с такой проблемой, как мне записывать символы с альфа не по порядку? #include <iostream> using namespace std; int main(){ int i,j; char alpha[]="abcdefrtwz"; char key[4]; int alphasize=strlen(alpha); for(j=0;j<alphasize;j++){ for(i=0;i<4;i++){ key=alpha; } cout<<key<<endl; } return 0; }
key=rand() % strlen(alpha) Не катит...функция ранд возвращает int и генерирует числа...Или как ты предлагал? МОжет я что-то не понял
из массива альфа "abcdefrtwz" нужно получить всевозможные 4хзначные комбинации? такие как: aaaa aaab aaac ..... aaaz baaa baab и т д так или чтото не так понял из условия?
а че тут пишем по букве в ячейку массива потом цикл от 0 и до макс 4х циферного числа в вашем базисе (10 букв -> 0000 .. 9999) с подменой цифр буквами из массива (каждая цифра - индекс в массиве) ну и все
самый простой вариант: Код (Text): int i, j, k, z; char alpha[]="abcdefrtwz"; char key[5]; int alphasize=sizeof(alpha); key[4]=NULL; for (i=0;i<alphasize;i++) { for (j=0;j<alphasize;j++) { for (k=0;k<alphasize;k++) { for (z=0;z<alphasize;z++) { key[0] = alpha[i]; key[1] = alpha[j]; key[2] = alpha[k]; key[3] = alpha[z]; printf("key = %s /n", key) } } } } Если ошибки где то, то сорри, на работе студии нет, проверить неначем. Но суть будет такая. Кстати если в алфавите будут повторяющиеся символы - то будут одинаковые варианты ключа. P.S. Единственное надо уточнить вычисление размера алфавита, я по памяти не помню, sizeof учитывает ли нулевой байт строки или нет. Ну это легко можно глянуть в мсдн.
Спасибо, но я воспользовался следующим методом: for(int a=0;a<alphasize;a++){ for(int b=0;b<alphasize;b++){ for(int c=0;c<alphasize;c++){ for(int d=0;d<alphasize;d++){ sprintf(key,"%c%c%c%c",alpha[a],alpha,alpha[c],alpha[d]); cout<<key<<endl; } } } }