1. 1v1=1 , 1∧0=0 , ¬0=1
2. ¬А=1, ВvС=0, Д∧С=1
Объяснение:
1
AvВ, если А = 1, В = 1 1v1=1
A ∧ B, если A = 1, B = 0 1∧0=0
¬ А, если А= 0 ¬0=1
2. 1. инверсия – это логическое отрицание, в данном случае высказывание А не истинно, значит не(не истина)=истинна
2. Дизъюнкция – логическое сложение будет истинным тогда, когда хотя бы одно исходное высказывание истинно, так как В-ложь и С ложь, то ВvС=0
3. Конъюнкция – логическое умножение будет истинным тогда, когда оба исходных выражения истинны. Т.к. Д и С истинны, то и результат истина, т.е. =1
#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
int k; //Переменная выбора - шифрование/дешифрование
int shift; //Величина сдвига
string result = ""; //Строка - результат
cout<<"Enter 1 for encryption and decryption of 2\n";
cin>>k;
switch (k) //Если k
{
case 1: //Если выбрано шифрование
{
cout<<"Enter value shift for encryption\n";
cin>>shift;
if (shift > 26)
shift = shift % 26; //Вычисление сдвига
cout<<"Read of file...\n";
setlocale(LC_ALL,"Russian");//Чтение файла
string s; //Строка считанная из файла
ifstream in("Test.txt");
getline(in,s);
cout<<"Text of file: \n"<<s<<endl;
in.close();
cout<<"Reading complete!\n";
cout<<"Encryption...\n";
for (int i = 0; i < s.length(); i++)
{
//Если не латиница
if (((int)(s[i]) < 65)||((int)(s[i]) > 122))
result += s[i];
//Если буква является строчной
if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))
{
//Если буква, после сдвига выходит за пределы алфавита
if ((int)(s[i]) + shift > 122)
//Добавление в строку результатов символ
result += (char)((int)(s[i]) + shift - 26);
//Если буква может быть сдвинута в пределах алфавита
else
//Добавление в строку результатов символ
result += (char)((int)(s[i]) + shift);
}
//Если буква является прописной
if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))
{
//Если буква, после сдвига выходит за пределы алфавита
if ((int)(s[i]) + shift > 90)
//Добавление в строку результатов символ
result += (char)((int)(s[i]) + shift - 26);
//Если буква может быть сдвинута в пределах алфавита
else
//Добавление в строку результатов символ
result += (char)((int)(s[i]) + shift);
}
}
cout<<"Encryption complete!\n";
cout<<"Result:\n";
cout<<result; //Вывод результата
break;
}
case 2: //Если выбрано дешифрование
{
cout<<"Enter value shift for decryption\n";
cin>>shift;
if (shift > 26)
shift = shift % 26;
cout<<"Read of file...\n";
setlocale(LC_ALL,"Russian");
string s;
ifstream in("Test.txt");
getline(in,s);
cout<<"Text of file: \n"<<s<<endl;
in.close();
cout<<"Reading complete!\n";
cout<<"Decryption...\n";
for (int i = 0; i < s.length(); i++)
{
//Если не латиница
if (((int)(s[i]) < 65)||((int)(s[i]) > 122))
result += s[i];
//Если буква является строчной
if (((int)(s[i]) >= 97) && ((int)(s[i]) <= 122))
{
//Если буква, после сдвига выходит за пределы алфавита
if ((int)(s[i]) - shift < 97)
//Добавление в строку результатов символ
result += (char)((int)(s[i]) - shift + 26);
//Если буква может быть сдвинута в пределах алфавита
else
//Добавление в строку результатов символ
result += (char)((int)(s[i]) - shift);
}
//Если буква является прописной
if (((int)(s[i]) >= 65) && ((int)(s[i]) <= 90))
{
//Если буква, после сдвига выходит за пределы алфавита
if ((int)(s[i]) - shift < 65)
//Добавление в строку результатов символ
result += (char)((int)(s[i]) - shift + 26);
//Если буква может быть сдвинута в пределах алфавита
else
//Добавление в строку результатов символ
result += (char)((int)(s[i]) - shift);
}
}
cout<<"Decryption complete!\n";
cout<<"Result:\n";
cout<<result; //Вывод результата
break;
}
default: //Если ошибочное значение
{
cout<<"Error value\n";
break;
}
}
getch();
return 0;
}
0