11077. Смена стиля

 

Желтому нужно выполнить задание по перезагрузке компьютера. У него есть специальная reboot-флешка с программой. Все переменные в этой программе написаны в стиле CamelCase или camelCase. Желтого это не устраивает, и он хочет чтобы все переменные были написаны в стиле snake_case.

Оба этих стиля используются для того, чтобы в строке без пробелов написать фразу из нескольких слов. В camelCase (CamelCase) для этого первая буква каждого слова из фразы, кроме возможно первого, делается заглавной, все остальные буквы остаются маленькими, и затем слова записываются друг за другом без пробелов. В snake_case все буквы слов оставляются маленькими и слова разделяются символом _.

Помогите Желтому преобразовать несколько названий переменных из camelCase (CamelCase) в snake_case.

 

Вход. В первой строке дано одно целое число n (1 n ≤ 100) – количество названий переменных, для которых Желтый хочет поменять стиль.

Далее даны n строк si (1 |si| 1000), каждая из которых состоит из латинских букв – названия переменных.

 

Выход. Выведите название каждой переменной, преобразованное в snake_case.

 

Пример входа

Пример выхода

4

camelCase

CamelCase

toBeOrNotToBe

ABCDE

camel_case

camel_case

to_be_or_not_to_be

a_b_c_d_e

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Читаем входную строку. Заглавные буквы преобразовываем в строчные. Перед каждой такой преобразованной буквой добавляем символ _ (если только буква не является первой в слове).

 

Реализация алгоритма

Читаем количество тестов n.

 

cin >> n;

 

Последовательно обрабатываем n тестов.

 

while (n--)

{

 

Читаем входную строку s. В строке res строим результат.

 

  cin >> s;

  res.clear();

 

Перебираем буквы строки s.

 

  for (i = 0; i < s.size(); i++)

  {

 

Если текущая буква si заглавная, то ставим перед ней символ _ (если она не первая в строке, то есть i > 0) и преобразовываем si в строчную.

 

    if (s[i] >= 'A' && s[i] <= 'Z')

    {

      s[i] = s[i] - 'A' + 'a';

      if (i > 0) res += '_';

    }

 

Дописываем si к res.

 

    res += s[i];

  }

 

Выводим ответ для текущего теста.

 

  cout << res << endl;

}