martes, 4 de enero de 2011

Kernighan_Ritchie_1.23 (Eliminar los Comentarios de un Programa en C)

_____________________________________________________________________________________
1.23Escriba un programa para eliminar todos los comentarios de un programa en C. No olvide manejar apropiadamente las cadenas entre comillas y  las constantes de carácter. Los comentarios en C no se anidan.
_____________________________________________________________________________________
Solución: Este programa sólo elimina los comentarios tipo C: los que empiezan con /* y terminan con */ Para hacerlo es necesario tener en cuenta que en cualquier momento se está o bien dentro o fuera de un comentario. A partir de saber cuál es la situación, hay que proceder con las acciones correspondientes.


#include<stdio.h>

int main()
{  /*Abre main *//*Comentario*/
int Estatus = 0; 
/*La variable estatus indica si se esta dentro (1)
  o fuera (0) de un comentario. Se inicia fuera */
int c; /*La variable c guardara los caracteres recibidos*/

/*Este ciclo while recibe los caracteres*/

while( (c = getchar()) != EOF )
{ /*Abre while */

/*OPCION 1: FUERA DE UN COMENTARIO*/
if (0 == Estatus)
{  /*Abre if Estatus == 0*/
if ( c != '/') 
putchar(c);

else
{ /*Abre else*/
c = getchar();
if ( '*' == c )
Estatus = 1;
else
{/*Abre else anidado*/
printf("/");
putchar(c);
} /*Cierra else anidado*/
} /*Cierra else*/
}  /*Cierra if Estatus == 0*/


/*OPCION 2: DENTRO DE UN COMENTARIO*/ 
if (1 == Estatus)
{  /*Abre if Estatus == 1*/
if ( '*' == c)
if ((c = getchar()) == '/')
Estatus = 0;
}  /*Cierra if Estatus = 1*/
} /*Cierra while*/

return 0;
}  /*Cierra main*/

Aplicado a este código, la salida es:

#include<stdio.h>

int main()
{  
int Estatus = 0; 

int c; 



while( (c = getchar()) != EOF )
{ 


if (0 == Estatus)
{  
if ( c != '/') 
putchar(c);

else
{ 
c = getchar();
if ( '*' == c )
Estatus = 1;
else
{
printf("/");
putchar(c);
} 
} 
}  


 
if (1 == Estatus)
{  
if ( '*' == c)
if ((c = getchar()) == '/')
Estatus = 0;
}  
} 

return 0;
}  

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...