From c8327fe5cdfc8e31b8785aa169acd4939a07d25e Mon Sep 17 00:00:00 2001 From: InigoGutierrez Date: Thu, 26 Dec 2019 01:41:57 +0100 Subject: Resuelto 442 en c++: Camellos, serpientes y kebabs. --- c/442_camellosSerpientesYKebabs.cpp | 73 +++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 c/442_camellosSerpientesYKebabs.cpp diff --git a/c/442_camellosSerpientesYKebabs.cpp b/c/442_camellosSerpientesYKebabs.cpp new file mode 100644 index 0000000..adfd34d --- /dev/null +++ b/c/442_camellosSerpientesYKebabs.cpp @@ -0,0 +1,73 @@ +#include +#include + +std::string input, type; +std::vector parts; +std::string tempString; +int i; + +int isUppercase(char character) { + return character >= 'A' && character <= 'Z'; +} + +void getPartsByDelim(std::string delim) { + while (input.find(delim) != std::string::npos) { + parts.push_back(input.substr(0, input.find(delim))); + input = input.substr(input.find(delim)+1); + } + parts.push_back(input); +} + +int main() { + while (std::cin >> input && !std::cin.eof()) { + // Separar variable en componentes + parts.clear(); + // Entrada CamelCase + if (isUppercase(input[0])) { + tempString.clear(); + for (char character : input) { + if (isUppercase(character)) { + parts.push_back(tempString); + tempString.clear(); + } + tempString.push_back(tolower(character)); + } + parts.push_back(tempString); + parts.erase(parts.begin()); + } + // Entrada snake_case + else if (input.find("_") != std::string::npos) { + getPartsByDelim("_"); + } + // Entrada kebab-case + else if (input.find("-") != std::string::npos) { + getPartsByDelim("-"); + + } + else { + parts.push_back(input); + } + + // Escribir variable como se pida + std::cin >> type; + if (type == "CamelCase") { + for (std::string word : parts) { + std::cout << (char)toupper(word[0]) << word.substr(1); + } + std::cout << std::endl; + } + else if (type == "snake_case") { + for (i = 0; i < (int)parts.size()-1; i++) { + std::cout << parts[i] << "_"; + } + std::cout << parts[i] << std::endl; + } + else if (type == "kebab-case") { + for (i = 0; i < (int)parts.size()-1; i++) { + std::cout << parts[i] << "-"; + } + std::cout << parts[i] << std::endl; + + } + } +} -- cgit v1.2.1