#include <iostream> #include <locale> #include <string> #include <cctype> // Для toupper using namespace std; // Функция для преобразования строки в верхний регистр void toUpper(string& input) { for (size_t i = 0; i < input.length(); ++i) { input = std::toupper(input, locale("ru_RU.UTF-8")); // Указываем локаль для русских символов } } // Функция для обработки сообщения и ключевого слова void isUpper(string& message, string& keyword) { toUpper(message); toUpper(keyword); cout << "Modified Message: " << message << endl; cout << "Modified Keyword: " << keyword << endl; } int main() { // Устанавливаем локаль для поддержки русских символов setlocale(LC_ALL, "ru_RU.UTF-8"); do { int choice; cout << "Выберите что будем делать: 1 - шифровать, 2 - дешифровать" << endl; cin >> choice; cin.ignore(); // Очистка буфера после ввода числа string keyword, message; switch (choice) { case 1: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите зашифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } case 2: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите расшифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } default: { cout << "Неверный выбор, попробуйте снова." << endl; break; } } } while (true); return 0; } уже все перепробывал в чем проблема
std::toupper в данном случае неверно используешь, нужно обработать каждый символ строки отдельно #include <iostream> #include <locale> #include <string> #include <cctype> using namespace std; // Функция для преобразования строки в верхний регистр void toUpper(string& input) { locale loc("ru_RU.UTF-8"); for (size_t i = 0; i < input.length(); ++i) { input[i] = toupper(input[i], loc); } } // Функция для обработки сообщения и ключевого слова void isUpper(string& message, string& keyword) { toUpper(message); toUpper(keyword); cout << "Modified Message: " << message << endl; cout << "Modified Keyword: " << keyword << endl; } int main() { // Устанавливаем локаль для поддержки русских символов setlocale(LC_ALL, "ru_RU.UTF-8"); do { int choice; cout << "Выберите что будем делать: 1 - шифровать, 2 - дешифровать" << endl; cin >> choice; cin.ignore(); // Очистка буфера после ввода числа string keyword, message; switch (choice) { case 1: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите зашифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } case 2: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите расшифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } default: { cout << "Неверный выбор, попробуйте снова." << endl; break; } } } while (true); return 0; } C #include <iostream> #include <locale> #include <string> #include <cctype> using namespace std; // Функция для преобразования строки в верхний регистр void toUpper(string& input) { locale loc("ru_RU.UTF-8"); for (size_t i = 0; i < input.length(); ++i) { input[i] = toupper(input[i], loc); } } // Функция для обработки сообщения и ключевого слова void isUpper(string& message, string& keyword) { toUpper(message); toUpper(keyword); cout << "Modified Message: " << message << endl; cout << "Modified Keyword: " << keyword << endl; } int main() { // Устанавливаем локаль для поддержки русских символов setlocale(LC_ALL, "ru_RU.UTF-8"); do { int choice; cout << "Выберите что будем делать: 1 - шифровать, 2 - дешифровать" << endl; cin >> choice; cin.ignore(); // Очистка буфера после ввода числа string keyword, message; switch (choice) { case 1: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите зашифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } case 2: { cout << "Введите ключевое слово не менее 7 символов (А-Я): " << endl; getline(cin, keyword); cout << "Введите сообщение, которое хотите расшифровать: " << endl; getline(cin, message); // Преобразование в верхний регистр isUpper(message, keyword); break; } default: { cout << "Неверный выбор, попробуйте снова." << endl; break; } } } while (true); return 0; }