1) Логическое выражение (A v С) & В соответствует данному фрагменту таблицы истинности;
2) Логическое выражение (A v В) & (С → А) не соответствует данному фрагменту таблицы истинности, т. к. уже на первом наборе значение рассматриваемого логического выражения не совпадает со значением F. Проведение дальнейших вычислений не имеет смысла;
3) Логическое выражение (А & В v С) & (В → А & С) не соответствует данному фрагменту таблицы истинности;
4) Логическое выражение (А → В) v (С v А → В) соответствует данному фрагменту таблицы истинности.
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main(){
int n;
cin >> n;
vector<vector<int>> a(n, vector<int> (n));
vector<int> x(2*n);
map<int,int> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
cin >> a[i][j];
int cur1 = 1, cur2 = 0, elem = 0, cnt = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i == j){
x[cur1] = a[i][j];
cur1 += 2;
m[a[i][j]]++;
if(m[a[i][j]] > cnt){
cnt = m[a[i][j]];
elem = a[i][j];
}
}
if(i + j == n - 1){
x[cur2] = a[i][j];
cur2 += 2;
m[a[i][j]]++;
if(m[a[i][j]] > cnt){
cnt = m[a[i][j]];
elem = a[i][j];
}
}
}
}
for(auto &i : x) cout << i << " ";
cout << "\nThe most popular element is : " << elem;
}
2) Логическое выражение (A v В) & (С → А) не соответствует данному фрагменту таблицы истинности, т. к. уже на первом наборе значение рассматриваемого логического выражения не совпадает со значением F. Проведение дальнейших вычислений не имеет смысла;
3) Логическое выражение (А & В v С) & (В → А & С) не соответствует данному фрагменту таблицы истинности;
4) Логическое выражение (А → В) v (С v А → В) соответствует данному фрагменту таблицы истинности.