Lex es un programa de computadora que genera analizadores léxicos y fue escrito por Mike Lesk y Eric Schmidt. Lex lee un flujo de entrada que especifica el analizador léxico y genera el código fuente que implementa el lexer en el lenguaje de programación C.
Descripción: Número perfecto , entero positivo que es igual a la suma de sus divisores propios, por ejemplo: 6 = 1+2+3.
Ejemplos:
Input: 3 Output: 3 is not perfect number Input: 6 Output: 6 is perfect number
Implementación:
/*Lex program to check perfect numbers*/ % { #include <string.h> void check(char*); % } /*Rule Section*/ % % [0 - 9] + check(yytext); % % int main() { // the input stream pointer extern FILE* yyin; // open a file handle to a particular file yyin = fopen("num", "r"); // The function that starts the analysis yylex(); return 0; } void check(char* a) { int len = strlen(a), i, num = 0; for (i = 0; i < len; i++) num = num * 10 + (a[i] - '0'); int x = 0, temp = num; for (i = 1; i < num; i++) { if (num % i == 0) x = x + i; } if (x == temp) printf("%d is perfect number \n", num); else printf("%d is not perfect number \n", num); }
Producción:
Publicación traducida automáticamente
Artículo escrito por thakur_aman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA