#include <iostream>
#include <string>
#include <algorithm>
#include <Windows.h>
using namespace std;
bool check_alphabet(char symbol) {
string alphabet = "";
for (size_t j = 0; j < alphabet.size(); j++)
{
if (alphabet[j] == symbol) {
return true;
}
}
return false;
}
pair<int,string> erase_counter_char_in_str_not_latin(string str) {
int i = 0;
int count = 0;
while (i <= str.size() - 1) {
if (not (check_alphabet(toupper(str[i] {
str.erase(str.begin() + i);
count++;
i--; // раз удалили, то нужно вернуться назад на один: i~45m -> i5~m (i уже идёт на следующий)
}
i++;
}
return make_pair(count, str);
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "Russian");
string str;
cout << "Введите строку: " << endl;
cin >> str;
pair<int,string> pair_count_str = erase_counter_char_in_str_not_latin(str);
cout << endl << "Удалено: " << pair_count_str.first << endl;
cout << "Конечная строка: " << pair_count_str.second;
}
F = ¬b · ¬a ∨ ¬b · c
Объяснение:
Выражение записано в какой-то смеси обозначений. Знаки операции логического умножения (∧) заменены знаками обычного умножения (·) , а для логического сложения (∨) знаки оставлены. Заменим и их на знак обычного сложения (+) и выражение сразу станет привычнее.
F = ¬(¬a · b + a · (b + ¬c))
Раскроем внутренние свобки
F = ¬(¬a · b + a · b + a · ¬c)
Вынесем за скобку b
F = ¬(b · (¬a + a) + a · ¬c)
Учтем, что ¬a + a = 1
F = ¬(b · 1 + a · ¬c)
Учтем также, что b · 1 = b
F = ¬(b + a · ¬c)
Снимем общую инверсию по правилу де-Моргана
F = ¬b · ¬(a · ¬c)
И еще раз снимем инверсию с выражения в скобках
F = ¬b · (¬a + c)
Осталось раскрыть скобки
F = ¬b · ¬a + ¬b · c
Моэно записать и в исходных обозначениях
F = ¬b · ¬a ∨ ¬b · c