В алгебре логики применяются только три операции: конъюнкция (или логическое умножение, обозначается обычно ∧), дизъюнкция (или логическое сложение, обозначается обычно ∨) и инверсия (отрицание, обозначается чаще ¬). Так же, в алгебре логики, в отличие от математики, может быть получено только два результата выражения, каким бы оно не было - это 1 (истина, true) или 0 (ложь, false). Так же, именно с этими символами проводят операции. Алгебраических операций куда больше: умножение, деление, сложение, вычитание, возведение в степень, корень N-ой степени, синусы, косинусы... Я, конечно, не всё перечислил, но разница ощутима. И числа, над которыми проводятся операции, тоже разнообразны, т.к. операции в математике проводятся над числами из десятичной системы счисления. Следовательно, результат операций в математике может получиться любой (в пределах десятичной системы счисления).
Алгебраических операций куда больше: умножение, деление, сложение, вычитание, возведение в степень, корень N-ой степени, синусы, косинусы... Я, конечно, не всё перечислил, но разница ощутима. И числа, над которыми проводятся операции, тоже разнообразны, т.к. операции в математике проводятся над числами из десятичной системы счисления. Следовательно, результат операций в математике может получиться любой (в пределах десятичной системы счисления).
#include <string.h>#include <locale.h>#include <math.h>#include <stdio.h>#define LANG 1 //Язык: 0 - английский; 1 - русскийsize_t kA = 0, ka = 0;int delta = (LANG) ? 'а' - 'А' : 'a' - 'A';void iter(char[], void(*)(char*), void(*)(char*));void incA(char* z = 0) { kA++; }void inca(char* z = 0) { ka++; }void changeA(char* ch);void changea(char* ch);int main() { setlocale(LC_ALL, "Russian"); char str[] = "ПихАЙ СЮДА ИСХОднУЮ СТРОКУ СИмволов"; iter(str, incA, inca); iter(str, changeA, changea); printf(str); return 0;}void iter(char str[], void(*trued)(char*), void(*falsed)(char*)) { for (size_t i = 0; i < strlen(str); ++i) { if (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'А' && str[i] <= 'Я') trued(str+i); if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'а' && str[i] <= 'я') falsed(str + i); }}void changeA(char* ch) { if (kA < ka) { *ch = *ch + delta; }}void changea(char* ch) { if (kA > ka) { *ch = *ch - delta; }}