Загрузка...

How to transfer Russian symbols to the upper register

Thread in C/C++ created by skowin Mar 17, 2025. 228 views

  1. skowin
    skowin Topic starter Mar 17, 2025 2 Feb 15, 2022
    #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;
    }
    уже все перепробывал в чем проблема
     
  2. Belka3333
    std::toupper в данном случае неверно используешь, нужно обработать каждый символ строки отдельно
    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;
    }
     
Loading...
Top