1239 - Atalhos Bloggo

O problem setter desse problema facilitou muita coisa para gente, então só bora!

Descrição

Solução

Aqui não precisamos nos preocupar com código HTML inválido, não precisamos nos preocupar com aba aberta sem fechar, vivemos no mais puro paraíso. Com isso, o que precisamos fazer é só substituir os underlines por tags itálico e os asteriscos por tags negrito, guardando em uma variável se já abrimos uma tag dessas antes ou não. Essa variável é consultada antes de colocarmos a tag e o valor dela troca sempre após colocarmos a tag apropriada.

Um detalhe interessante para as linguagens JavaScript e Python é que eu não uso o replace indiscriminadamente porque alguns dos underlines abrem e outros fecham, mesma coisa para os asteriscos, então precisa-se trocar com certo critério.

#include <string.h>
#include <stdio.h>

int main(){
    char frase[51];
    int n, negrito, italico;

    while(gets(frase) != NULL){
        negrito = 0;
        italico = 0;
        n = strlen(frase);
        for(int i = 0; i < n; ++i){
            if(frase[i] == '_'){
                printf("%s", italico ? "</i>" : "<i>");
                italico = 1 - italico;
            }else if(frase[i] == '*'){
                printf("%s", negrito ? "</b>" : "<b>");
                negrito = 1 - negrito;
            }else{
                printf("%c", frase[i]);
            }
        }
        printf("\n");
    }

    return 0;
}

Last updated