Большие буквы стоят в таблице кодов подряд, то есть, образуют диапазон, нам требуется проверить лежит ли буква в заданном диапазоне. Для русских букв проверять будем так:
if ('А' <= str[0] && str[0] <= 'Я'), для английских нужно просто поменять буквы на английские.
Пример для русских букв:
Программа выводит заглавные буквы
#include <iostream>
#include <string>
#include <windows.h>
signed main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
std::string str;
getline(std::cin, str);
if ('А' <= str[0] && str[0] <= 'Я')
std::cout << "Первая буква является заглавной!";
else
std::cout << "Этот символ не является заглавной буквой!";
Условия: 1. Алексеев и Воробьев будут или не будут в призерах соревнований одновременно. 2. Воробьев будет в тройке победителей, то и Алексеев тоже. 3. Алексеев не будет среди призеров или среди победителей будут Бедняков и Воробьев.
Сразу заменим фамилии в буквы: Алексеева = А Беднякова = Б Воробьева = В
Запишим утверждение пользуясь языком логических выражений: ! - логическое отрицание ∪ - дизьюнкция, логическое ИЛИ ∩ - коньюнкция, логическое И
Запись первой буквы фамилии учасника будем считать за утверждение, что он входит в тройку победителей, то есть ИСТИНА Отрицанием же будет утверждение, что он не входит в тройку победителей.
1. Алексеев и Воробьев будут в призерах соревнований одновременно на языке логических выражений выглядит вот так: (А ∩ В)
Алексеев и Воробьев не будут в призерах соревнований одновременно: !(А ∩ В)
И первое и второе выражение входит в первое условие, запишим его едино: (А ∩ В) ∪ !(А ∩ В)
2. Второе условие можем изобразить как: В ∩ А
3. Третье условие получается из двух.Алексеев не будет среди призеров: !А
Или среди победителей будут Бедняков и Воробьев: Б ∩ В
Теперь снова объеденим в одно целое: !А ∪ (Б ∩ В)
Теперь запишим все утверждения целеком рядом: 1. (А ∩ В) ∪ !(А ∩ В) 2. В ∩ А 3. !А ∪ (Б ∩ В)
Вопрос: После соревнований оказалось, что два из предположений истинно, а одно - ложно. Кто из спортсменов был в призерах?
Наглядно видно, что в последнем (третьем) утверждении два должны быть именны, а одно ложно.
ответ: Бедняков и Воробьев были в призерах.
за отметку "Лучший ответ" и нажатую кнопочку " " - тут и у меня в профиле.
Решение, которое перебирает
Большие буквы стоят в таблице кодов подряд, то есть, образуют диапазон, нам требуется проверить лежит ли буква в заданном диапазоне. Для русских букв проверять будем так:
if ('А' <= str[0] && str[0] <= 'Я'), для английских нужно просто поменять буквы на английские.
Пример для русских букв:
Программа выводит заглавные буквы
#include <iostream>
#include <string>
#include <windows.h>
signed main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
std::string str;
getline(std::cin, str);
if ('А' <= str[0] && str[0] <= 'Я')
std::cout << "Первая буква является заглавной!";
else
std::cout << "Этот символ не является заглавной буквой!";
return 0;
}