fork download
  1. %{
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. int is_armstrong(int num) {
  6. int original = num;
  7. int temp = num;
  8. int d = 0;
  9. int result = 0;
  10. while (temp != 0) {
  11. temp /= 10;
  12. d++;
  13. }
  14. }
  15. temp = original;
  16. while (temp != 0) {
  17. int remainder = temp % 10;
  18. result += (int)round(pow(remainder, d));
  19. temp /= 10;
  20. }
  21. return (result == original);
  22. }
  23. %}
  24.  
  25. %%
  26. [0-9]+ {
  27. int num = atoi(yytext);
  28. if (is_armstrong(num))
  29. printf("Armstrong");
  30. else
  31. printf("Not an armstrong");
  32. }
  33.  
  34. \n|. {
  35.  
  36. }
  37. %%
  38. int main() {
  39. printf("Enter numbers to check (press Ctrl+D to stop):\n");
  40. yylex();
  41. return 0;
  42. }
Success #stdin #stdout #stderr 0.03s 6876KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/3f4BsN/prog:2:1: Syntax error: Operator expected
ERROR: /home/3f4BsN/prog:42:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit