Начнем с утверждения, что это была блондинка, потому что таких утверждений два. Если II сказал правду, то второе его утверждение ложно и блондинка была в шляпе. Тогда утверждение I о брюнетке - ложь. Это рассуждение иллюстрирует вторая сверху таблица. В то же время, будет ложным утверждение IV об отсутствии очков и получается, что была блондинка в шляпе и в очках. В этом случае ложно утверждение III о том, что это была рыжая. Удостоверяемся, что противоречий в цепочке рассуждений нет. Окончательно: это была блондинка в шляпе и очках. Каждый свидетель дал одно истинное показание и одно ложное.
Прочие проверки можно не делать, считая задачу корректной.
#include <iostream>
#include <string>
using namespace std;
string cod(char* text,int ROT) {
for (int i = 0; i < strlen(text); i++)
if (text[i] != ' ')
text[i] += ROT;
return text;
};
string decod(char* text, int ROT) {
for (int i = 0; i < strlen(text); i++)
if (text[i] != ' ')
text[i] -= ROT;
return text;
};
int main() {
setlocale(LC_ALL, "Rus");
cout << "Введите текст: " << endl;
char s[256]; cin.getline(s,255);
cout << "Что нужно сделать(1-декод. 2-код.): " << endl;
int d; cin >> d;
cout << "ROT:" << endl;
int ROT; cin >> ROT;
if (d == 2) cout<< cod(s, ROT)<< endl;
else cout<< decod(s, ROT)<< endl;
system("pause");
}
Пример(1):
Введите текст:
Proverka
Что нужно сделать(1-декод. 2-код.):
2
ROT:
3
Suryhund
Пример(2):
Введите текст:
Suryhund
Что нужно сделать(1-декод. 2-код.):
1
ROT:
3
Proverka