Problema: 1239
Enunciado:
Você está ajudando a desenvolver um sistema de gerenciamento de weblog chamado bloggo. Embora bloggo coloque todo o conteúdo direto no website em HTML, nem todos autores apreciam usar tags HTML em seus textos. Para tornar a vida deles mais fáceis, bloggo oferece uma sintaxe simples chamada atalhos para obter alguns efeitos textuais em HTML. Sua tarefa é, dado um documento escrito com atalhos, traduzi-lo para o HTML apropriado. Um atalho é usado para colocar texto em itálico. HTML faz isto com as tags <i> e </i>, mas no bloggo um autor pode simplesmente colocar um pedaço de texto entre dois caracteres de sublinhado, '_'. Portanto, onde um autor escreve You _should_ see the baby elephant at the zoo! bloggo vai publicar o seguinte: You <i>should</i> see the baby elephant at the zoo! Outro atalho serve para colocar texto em negrito, o que, em HTML, é feito com as tags <b> e </b>. Bloggo permite aos autores fazer o mesmo com pares do caractere asterisco, '*'. Quando um autor escreve o texto Move it from *Receiving* to *Accounts Payable*. ele vai sair no website assim: Move it from <b>Receiving</b> to <b>Accounts Payable</b>.
Linguagem: C++
A string é percorrida, procurando por _ e *. Caso não seja nenhuma dessas duas, o caracter é copiado diretamente para a string final. Caso contrário, é verificado se deve ser feito a abertura ou o fechamento do código, onde também será adicionado a string final.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <iostream> using namespace std; int main() { string str1, str_final; while(getline(cin,str1)){ str_final = ""; bool openUnderline = false; bool openMult = false; for(int i=0; i<str1.length(); i++){ if(str1[i]=='_'){ if(openUnderline){ openUnderline = false; str_final += "</i>"; } else{ openUnderline = true; str_final += "<i>"; } } else if(str1[i]=='*'){ if(openMult){ openMult = false; str_final += "</b>"; } else{ openMult = true; str_final += "<b>"; } } else str_final += str1[i]; } cout << str_final << endl; } return 0; } |
Nenhum comentário:
Postar um comentário