Согласовать окончания C++, как сделать?

В языке C++ существуют правила для согласования окончаний существительных в зависимости от их числа. Это правила складываются из нескольких шагов:

1. Если число заканчивается на 1, но не на 11, то используется единственное число. Например: "1 байт", "21 байт", "31 байт".

2. Если число заканчивается на 2, 3 или 4, но не на 12, 13 или 14, то используется множественное число. Например: "2 байта", "3 байта", "24 байта".

3. В остальных случаях используется множественное число. Например: "0 байт", "10 байт", "100 байт".

Для реализации данного согласования в C++ можно воспользоваться конструкцией if-else или switch-case. Ниже приведен пример функции, которая принимает число и возвращает строку с правильным окончанием для слова "байт":

#include <iostream>
#include <string>

std::string formatBytes(int num)
{
    // получаем последнюю цифру числа
    int lastDigit = num % 10;
    
    // получаем предпоследнюю цифру числа
    int secondLastDigit = (num / 10) % 10;
    
    // проверяем условия согласования
    if (lastDigit == 1 && secondLastDigit != 1)
    {
        return std::to_string(num) + " байт";
    }
    else if (lastDigit >= 2 && lastDigit <= 4 && (secondLastDigit != 1 || secondLastDigit != 11))
    {
        return std::to_string(num) + " байта";
    }
    else
    {
        return std::to_string(num) + " байтов";
    }
}

int main()
{
    int numBytes = 42;
    
    std::string result = formatBytes(numBytes);
    
    std::cout << result << std::endl;
    
    return 0;
}

В данном примере мы объявляем функцию formatBytes, которая принимает число и возвращает строку с правильным окончанием для слова "байт". Мы используем оператор % для получения последней и предпоследней цифр числа. Затем мы сравниваем цифры с условиями согласования с помощью if-else. На выходе мы получаем строку, содержащую число и правильное окончание слова "байт".