Таблица истинности - C (СИ)
Формулировка задачи:
Нужно написать программу для построения таблицы истинности функции. F ≡ ((A ↔ B) → C)∧((¬B∧A) → D)
В таблице должны содержаться след. Столбцы: • A,B,C,D
• A,B,C,D
• E :≡ A ↔ B
• G :≡ (A ↔ B) → C ≡ E → C
• H :≡ ¬B∧A
• I :≡ (¬B∧A) → D ≡ H → D
• F ≡ G∧I (общая формула)
Нельзя использовать "If", "Switch" и "?:" операторы.
Примерно таблица должна выглядеть след. Образом:
| A | B | C | D | E = A <-> B | G = E -> C | H = (NOT B) AND A | I = H->D | F |
+---+---+---+---+------------------+----------------+-------------------------------+-------------+---+
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
.
.
.
Вот мой код программы. Но почему то рассчитывается не вся таблица, а только первая строчка. Как сделать, чтобы был рассвет для всех 16 строчек?
#include<stdio.h>
int A,B,C,D;
int E,F,G,H,I;
int j;
int main(void)
{
printf(" | A | B | C | D |E = A <-> B | G = E -> C | H = (NOT B) AND A | I = H -> D | F |\ n" );
printf("+---+--+--+---+--------------+-------------+-----------------------+-----------------+\ n" );
for (int j =0; j < 16; j++);
{
D = ( j/1 ) %2;
C = ( j/2 ) %2;
B = ( j/4 ) %2;
A = ( j/8 ) %2;
E = A == B;
G = (!E)|C;
H = (!B)&(A);
I = (!H)|D;
F = G&I;
printf("| %d | %d | %d | %d | %d | %d | %d | %d | %d |\n", A,B,C,D,E,F,G,H,I,F);
}
return 0;
}Решение задачи: «Таблица истинности»
textual
Листинг программы
for (int j =0; j < 16; j++);