Pesquisar este blog

Livros Recomendados

segunda-feira, 5 de outubro de 2020

URI - 1239 - Atalhos Bloggo - Strings - C++

Plataforma: URI
Problema1239

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++

Solução:
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

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas