Мне нужно написать функцию, которая принимает в качестве аргументов целое число, представляющее строку в таблице истинности, и логический массив, в котором хранятся значения для этой строки таблицы истинности.
Вот пример таблицы истинности
Row| A | B | C |
1 | T | T | T |
2 | T | T | F |
3 | T | F | T |
4 | T | F | F |
5 | F | T | T |
6 | F | T | F |
7 | F | F | T |
8 | F | F | F |
Обратите внимание, что данная таблица истинности может иметь больше или меньше строк, чем эта таблица, поскольку количество возможных переменных может меняться.
Прототип функции может выглядеть так
getRow(int rowNum, bool boolArr[]);
Если бы эта функция была вызвана, например, как
getRow(3, boolArr[])
Ему нужно будет вернуть массив со следующими элементами
|1|0|1| (or |T|F|T|)
Трудность для меня возникает из-за того, что количество переменных может меняться, следовательно, увеличиваться или уменьшаться количество строк. Например, список переменных может быть A, B, C, D, E и F, а не просто A, B и C.
Я думаю, что лучшим решением было бы написать цикл, который считал до номера строки и существенно изменил элементы массива, как если бы он считался в двоичном формате. Так что
1st loop iteration, array elements are 0|0|...|0|1|
2nd loop iteration, array elements are 0|0|...|1|0|
Я не могу понять, как это сделать, и не могу найти решение в другом месте в Интернете. Извините за всю путаницу и спасибо за помощь
genTruth
, не объясняя, что должна вычислять функция, а затем переходите к битовым сдвигам. Было бы полезно с вашим объяснением, если бы вы сначала четко изложили проблему, а затем объяснили свой подход. - person Pradhan   schedule 21.01.2015getRow(rowNum, boolArr[]);
? массивы в стиле C превращаются в указатели при использовании в качестве аргумента функции. Если вы знаете размер массива во время компиляции, гораздо проще работать сstd::array
а>. Если вам нужно определить размер во время выполнения, вы можете использоватьstd::vector
и ваш прототип может бытьgetRow(rowNum, vector, numVars)
. - person Pradhan   schedule 21.01.2015