строчные символы и добавьте _ перед преобразованной заглавной буквой

У меня есть еще один вопрос, я хочу добавить _ перед каждой заглавной буквой, которая будет преобразована в строчные, плюс первая буква не может быть заглавной !! Я не могу понять, как это сделать …: {пример:

вход: loLollL, выход: lo_loll_l
и я хочу, чтобы это тоже пошло задом наперед: input: lo_loll_l output: loLollL

код здесь:

#include <iostream>
#include <algorithm>

using namespace std;

int main ()
{
const int max = 100;
string slovo;
int pocet_r;

cout << "Zadaj pocet uloh:" << endl;
cin >> pocet_r;

if(pocet_r >= 1 && pocet_r <=100)
{

// funkcia na zabezpecenie minimalneho poctu chars
for (int i = 0; i <pocet_r; i++)
{
cout << "Uloha " << i+1 << ":" << endl;

cin >> slovo;

if(slovo.size() > max)
{
cout << "slovo musi mat minimalne 1 a maximalne 100 znakov" << endl;
}
while( slovo.size() > max)
{
cin >> slovo;
}

for (int i=0; i <= slovo.size(); i++)
{
int s = slovo[i];
while (s > 'A' && s <= 'Z')
{
if(s<='Z' && s>='A'){
return s-('Z'-'_z');
}else{

cout <<  "chyba";

}
}}cout << slovo[i] << endl;

}

}else{
cout << "Minimalne 1 a maximalne 100 uloh" << endl;
}
system("pause");
}

EDIT>

for (int i=0; i <= slovo.size(); i++)
{
while (slovo[i] >= 'A' && slovo[i] <= 'Z')
{
string s = transform(slovo[i]);

cout << s << endl;

s = untransform(s);

cout << s << endl;
}
}

0

Решение

Это должно работать:

#include <string>
#include <cctype>
#include <iostream>

using namespace std;

string
transform(const string& s)
{
const size_t n = s.size();
string t;

for (size_t i = 0; i < n; ++i)
{
const char c = s[i];

if (isupper(c))
{
t.push_back('_');
}

t.push_back(tolower(c));
}

return t;
}

string
untransform(const string& s)
{
string t;

const size_t n = s.size();
size_t i = 0;

while (i < n)
{
char c = s[i++];

if (c != '_')
{
t.push_back(c);
continue;
}

c = s[i++];

t.push_back(toupper(c));
}

return t;
}

int
main()
{
string s = transform("loLollL");

cout << s << endl;

s = untransform(s);

cout << s << endl;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]