Основы объектно-ориентированного программирования на языке C# book | Page 62

4 Булевi функцiı̈ та вирази // виведемо на екран поточну комбiнацiю, // позначаючи false як 0 i true як 1 for (int i = 0; i < n; i++) Console.Write(x[i] ? ’1’ : ’0’); Console.WriteLine(); // сформуємо чергову комбiнацiю // для цього будемо розглядати x як зображення // n-цифрового двiйкового числа // (x[i]=true, якщо i-та цифра числа = 1, iнакше x[i]=false) // якщо поточна комбiнацiя – зображення числа N, // то наступною комбiнацiєю зробимо зображенням числа N+1 // для додавання одиницi використаємо простий варiант // алгоритму додавання в стовпчик bool carry = true; // iндикатор переносу // цикл по цифрах, починаючи з останньої (молодший розряд) for (int i = n - 1; i >= 0; i--) { if (x[i] && carry) x[i] = false; else { x[i] = x[i] || carry; carry = false; } } // якщо маємо перенiс пiсля циклу, це означає, // що сума не може бути зображеня N-цифровим двiйковим // числом, тобто бiльша за 2 N − 1; // оскiльки на кожнiй iтерацiї циклу ми додавали 1 // починаючи з масиву x, що зображає число нуль, то це // означає, що ми вже перебрали 2 N комбiнацiй // i перебiр необхiдно завершити if (carry) break; } } } Наприклад, при n = 3 програма виводить на екран таку послiдов- нiсть з 2 3 = 8 рядкiв: 000 001 010 011 100 101 110 111 4.3 Завдання для самостiйноı̈ роботи 1. Написати програму, яка виводить на консоль таблицi iстинностi булевих функцiй, зображених такими булевими виразами: a) (x 1 ∨ x 2 ) ∧ x 3 62