Ir para conteúdo
Fórum Script Brasil
  • 0

compilador markdown


joka73

Pergunta

ola pessoal, estou a começar em C++ e gostaria de que alguém me ajudasse neste codigo,

pois não consigo fazer que o contador incremente as linhas em branco.

desde já obrigado

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

// le_bloco (istream& in, string& bloco) 


bool e_linha (string& bloco) {
     return bloco.size() >= 1 && bloco.find('\n') == bloco.size() - 1;
}


bool e_linha_em_branco (string& bloco) {
     bool em_branco = true;
     for (int i = 0;  i < bloco.size(); i++) {
         if (!isspace(bloco[i])) {
            em_branco = false;
            break;
         }
     }
     return em_branco && e_linha(bloco);
}

bool e_titulo (string& linha) {
     
     return (linha.size()>=2  &&  linha[0]=='!'  &&  linha[linha.size()-1]=='!' && e_linha_em_branco(linha));
}

bool e_capitulo (string& linha) {
     
     return (linha.size()>=1 && linha[0]=='#');
}

bool e_seccao (string& linha) {
     return (linha.size()>=2 && linha[0]=='#' && linha[1]=='#');
}

bool e_subseccao (string& linha) {
      return (linha.size()>=3 && linha[0]=='#' && linha[1]=='#' && linha[2]=='#');
}

bool e_ul (string& linha) {
     
     return (linha[0]=='-' && linha[1]==' ');
}

//bool e_ul_li (string& linha) {
//     
//     return (e_ul());
//}


void le_bloco (string& bloco) {
   string linha;
    while (getline(cin, linha)) {
          linha = linha + '\n';
          if (e_linha_em_branco(linha)) {
             break;
          }
          bloco += linha;
   }
}

int main()
{
    string linha="";
    //string bloco = "";
//
//    le_bloco(bloco);
//    cout << "-->\n";
//    cout << bloco << endl;
//    cout << "<--\n";  
//  
//
//    cout << "e linha:      " << e_linha(bloco) << endl;
//    cout << "linha branco: " << e_linha_em_branco(bloco) << endl;

   
    if ( !cin.eof())  {
          while (getline(cin, linha)) {
          
          if (e_titulo(linha))  {
             cout <<"<title>" <<linha.substr(1, linha.size()-2) <<"</title>\n";
          }
          else if (e_subseccao(linha))  {
               cout <<"<h3>" <<linha.substr(3) <<"</h3>\n";
          }
          else if (e_seccao(linha))  {
               cout <<"<h2>" <<linha.substr(2) <<"</h2>\n";
          }
          else if (e_capitulo(linha))  {
               cout <<"<h1>" <<linha.substr(1) <<"</h1>\n";
          }
          else if (e_ul(linha))  {
//               cout <<"<ul>\n";
//               for () {
//               }  
               cout <<"<li>" <<linha.substr(2) <<"</li>\n";
          } 
          else  {
              cout <<"OUTRA COISA QUALQUER.\n";
          }
          }
    }
                    //while (e_ul(linha))  {
//                     cout <<"<li>" <<linha.substr(2) <<"</li>\n";
//                     break;
//                    }
               
          
    system("PAUSE");
    return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...