Как заменить элемент на сочетание букв?

Пусть у нас есть массив, у которого четные элементы заменяются на сочетание букв "KB". Например, было 1234565432, а должно стать 1KB3KB5KB5KB3KB. Пробую сделать напрямую, но на выходе результата не получается:

for (int i = 0; i < strlen(mstr); i++) {
        if (arr[i] % 2 == 0) {
            kb_str[i] = '0' + arr[i];
            kb_str[i] = 'KB';
            //kb_str[i + 1] = 'B';
        }
        else {
            kb_str[i] = '0' + arr[i];
        }
        cout << kb_str[i] << " ";
    }

Подскажите, пожалуйста, как модифицировать код?


Ответы (1 шт):

Автор решения: bloody

В следующий раз постарайтесь выкладывать ВЕСЬ код. ("int main() {...}", "#include <*>", итд).

Посмотрел, что вы написали и ничего не понял. Потому вот моё решение: Создадим объект класса string, пройдёмся по нужной строке, если увидим чётную цифру - просто сделаем конкатенацию 2 строк - буффер (который создали выше) и строку "KB". Если цифра не чётная - просто делаем такую же конкатенацию, но с этой цифрой.

Реализация:

#include <iostream>
#include <string>

using namespace std;

short getNumber(char sym)
{
    short num = sym - '0';
    if (num > 9)
    {
        throw exception("unvalid sym");
    }
    return num;
}

int main()
{
    string buffer;
    string str;
    string need_str;
    getline(cin, str);
    getline(cin, need_str);
    for (size_t x = 0; x < strlen(str.c_str()); x++)
    {
        if (getNumber(str[x]) % 2 == 0)
        {
            buffer += need_str;
        }
        else
        {
            buffer += str[x];
        }
    }
    cout << str << endl;
    cout << buffer << endl;
}
→ Ссылка