Все варианты логического массива. - страница 3

 
2010.01.13 16:48:20 modify EURGBP,H1: 111110
2010.01.13 16:48:20 modify EURGBP,H1: 011110
2010.01.13 16:48:20 modify EURGBP,H1: 101110
2010.01.13 16:48:20 modify EURGBP,H1: 001110
2010.01.13 16:48:20 modify EURGBP,H1: 110110
2010.01.13 16:48:20 modify EURGBP,H1: 010110
2010.01.13 16:48:20 modify EURGBP,H1: 100110
2010.01.13 16:48:20 modify EURGBP,H1: 000110
2010.01.13 16:48:20 modify EURGBP,H1: 111010
2010.01.13 16:48:20 modify EURGBP,H1: 011010
2010.01.13 16:48:20 modify EURGBP,H1: 101010
2010.01.13 16:48:20 modify EURGBP,H1: 001010
2010.01.13 16:48:20 modify EURGBP,H1: 110010
2010.01.13 16:48:20 modify EURGBP,H1: 010010
2010.01.13 16:48:20 modify EURGBP,H1: 100010
2010.01.13 16:48:20 modify EURGBP,H1: 000010
2010.01.13 16:48:20 modify EURGBP,H1: 111100
2010.01.13 16:48:20 modify EURGBP,H1: 011100
2010.01.13 16:48:20 modify EURGBP,H1: 101100
2010.01.13 16:48:20 modify EURGBP,H1: 001100
2010.01.13 16:48:20 modify EURGBP,H1: 110100
2010.01.13 16:48:20 modify EURGBP,H1: 010100
2010.01.13 16:48:20 modify EURGBP,H1: 100100
2010.01.13 16:48:20 modify EURGBP,H1: 000100
2010.01.13 16:48:20 modify EURGBP,H1: 111000
2010.01.13 16:48:20 modify EURGBP,H1: 011000
2010.01.13 16:48:20 modify EURGBP,H1: 101000
2010.01.13 16:48:20 modify EURGBP,H1: 001000
2010.01.13 16:48:20 modify EURGBP,H1: 110000
2010.01.13 16:48:20 modify EURGBP,H1: 010000
2010.01.13 16:48:20 modify EURGBP,H1: 100000
2010.01.13 16:48:20 modify EURGBP,H1: 000000
 
2010.01.13 16:51:01 modify EURGBP,H1: zzzx
2010.01.13 16:51:01 modify EURGBP,H1: yzzx
2010.01.13 16:51:01 modify EURGBP,H1: xzzx
2010.01.13 16:51:01 modify EURGBP,H1: zyzx
2010.01.13 16:51:01 modify EURGBP,H1: yyzx
2010.01.13 16:51:01 modify EURGBP,H1: xyzx
2010.01.13 16:51:01 modify EURGBP,H1: zxzx
2010.01.13 16:51:01 modify EURGBP,H1: yxzx
2010.01.13 16:51:01 modify EURGBP,H1: xxzx
2010.01.13 16:51:01 modify EURGBP,H1: zzyx
2010.01.13 16:51:01 modify EURGBP,H1: yzyx
2010.01.13 16:51:01 modify EURGBP,H1: xzyx
2010.01.13 16:51:01 modify EURGBP,H1: zyyx
2010.01.13 16:51:01 modify EURGBP,H1: yyyx
2010.01.13 16:51:01 modify EURGBP,H1: xyyx
2010.01.13 16:51:01 modify EURGBP,H1: zxyx
2010.01.13 16:51:01 modify EURGBP,H1: yxyx
2010.01.13 16:51:01 modify EURGBP,H1: xxyx
2010.01.13 16:51:01 modify EURGBP,H1: zzxx
2010.01.13 16:51:01 modify EURGBP,H1: yzxx
2010.01.13 16:51:01 modify EURGBP,H1: xzxx
2010.01.13 16:51:01 modify EURGBP,H1: zyxx
2010.01.13 16:51:01 modify EURGBP,H1: yyxx
2010.01.13 16:51:01 modify EURGBP,H1: xyxx
2010.01.13 16:51:01 modify EURGBP,H1: zxxx
2010.01.13 16:51:01 modify EURGBP,H1: yxxx
2010.01.13 16:51:01 modify EURGBP,H1: xxxx
 
ладно, убедили... )
 

Нет, кроме шуток, замечательный код!

Большое спасибо за метод, тов. sergeev ))

 

Он не всех комбинаций.

См. пример с ELAX = ALEX

#define K       4
#define N       4

string arr[K]={"L","A","E","X"}; 
int pos[N]; 
 
void start() {

for (int j=0; j<N; j++) pos[j]=0; 
while (pos[N-1]<=0) 
{
 string st="";
 for (j=0; j<N; j++) st=st+arr[pos[j]];  
 pos[0]++; for (j=0; j<N-1; j++) if (pos[j]>=K) { pos[j]=0; pos[j+1]++; } 
 
 if(st=="ALEX")Alert("ALEX FUND!"); //NOT FUND :(
 
 Print(st); 
}
}
Где же ошибка?

 

Не мешало бы вспомнить для начала комбинаторику для подсчёта общего числа комбинаций.

Всем нам хорошо известен обычный советский электросчётчик. Показания потреблённой электроэнергии мы снимаем с пяти дисков, на каждом из которых по 10 цифр от нуля до 9. Для подсчёта числа возможных числовых комбинаций счётчика в комбинаторике есть понятие и формула. Понятие - кортеж, моделью которого и является электросчётчик. Формула - Энн в степени эмм, где энн - число цифр на каждом диске, эмм - число дисков с цифрами. Таким образом общее число комбинаций чисел, которое может показать электросчётчик = 10 в степени 5 = 100000.

Пусть на электросчётчике 2 из диска имеет не 10 цифр, а только пять. Тогда мы имеем 2 кортежа. И тогда общее число комбинаций будет = пять во второй степени, умноженное на 10 в третьей = 25*1000=25000.

Вывод: Для построения программного кода, который бы просчитывал бы число комбинаций при произвольном числе дисков счётчика и при произвольном количестве цифр на каждом из дисков, нужно писать рекруссивную функцию (функцию, которая вызывала бы сама себя) . И при этом нужна управляющая конструкция (цикл), которая всякий раз задавала бы число цифр на диске счётчика и число однотипных дисков для последующего перемножения.

 
drknn:

Вывод: Для построения программного кода, который бы просчитывал бы число комбинаций при произвольном числе дисков счётчика и при произвольном количестве цифр на каждом из дисков, нужно писать рекруссивную функцию (функцию, которая вызывала бы сама себя) . И при этом нужна управляющая конструкция (цикл), которая всякий раз задавала бы число цифр на диске счётчика и число однотипных дисков для последующего перемножения.

Применение рекурсии в этой задаче необосновано.
 
FinGeR:

Он не всех комбинаций.

См. пример с ELAX = ALEX

        while (pos[N-1]<K) 
 
lea:
Применение рекурсии в этой задаче необосновано.

Ну это вопрос спорный - я лишь предложил вариант решения. Ни кто не утверждает, что мой вариант единственный.