Eliminar comentarios de un programa C/C++ dado

Dado un programa C/C++, elimine los comentarios de él. 

Recomendamos encarecidamente minimizar su navegador y probarlo usted mismo primero.

La idea es mantener dos variables indicadoras, una para indicar que se inicia un comentario de una sola línea y otra para indicar que se inicia un comentario de varias líneas. Cuando se establece una bandera, buscamos el final del comentario e ignoramos todos los caracteres entre el inicio y el final.

A continuación se muestra la implementación en C++ de la idea anterior.

C++

// C++ program to remove comments from a C/C++ program
#include <iostream>
using namespace std;
 
string removeComments(string prgm)
{
    int n = prgm.length();
    string res;
 
    // Flags to indicate that single line and multiple line comments
    // have started or not.
    bool s_cmt = false;
    bool m_cmt = false;
 
 
    // Traverse the given program
    for (int i=0; i<n; i++)
    {
        // If single line comment flag is on, then check for end of it
        if (s_cmt == true && prgm[i] == '\n')
            s_cmt = false;
 
        // If multiple line comment is on, then check for end of it
        else if  (m_cmt == true && prgm[i] == '*' && prgm[i+1] == '/')
            m_cmt = false,  i++;
 
        // If this character is in a comment, ignore it
        else if (s_cmt || m_cmt)
            continue;
 
        // Check for beginning of comments and set the appropriate flags
        else if (prgm[i] == '/' && prgm[i+1] == '/')
            s_cmt = true, i++;
        else if (prgm[i] == '/' && prgm[i+1] == '*')
            m_cmt = true,  i++;
 
        // If current character is a non-comment character, append it to res
        else  res += prgm[i];
    }
    return res;
}
 
// Driver program to test above functions
int main()
{
    string prgm = "   /* Test program */ \n"
                  "   int main()  \n"
                  "   {           \n"
                  "      // variable declaration \n"
                  "      int a, b, c;    \n"
                  "      /* This is a test  \n"
                  "          multiline     \n"
                  "          comment for   \n"
                  "          testing */      \n"
                  "      a = b + c;       \n"
                  "   }           \n";
    cout << "Given Program \n";
    cout << prgm << endl;
    cout << " Modified Program ";
    cout << removeComments(prgm);
    return 0;
}
Producción

Given Program 
   /* Test program */ 
   int main()  
   {           
      // variable declaration 
      int a, b, c;    
      /* This is a test  
          multiline     
          comment for   
          testing */      
      a = b + c;       
   }           

 Modified Program     
   int main()  
   {           
            int a, b, c;    
            
      a = b + c;       
   }           

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *