Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: N0body en 28 Agosto 2011, 21:48 pm



Título: Programa que imprime su código
Publicado por: N0body en 28 Agosto 2011, 21:48 pm
Uno de los ejercicios propuestos por un profesor de programación, fue el de hacer un programa que imprima su código. (Obviamente sin leer ningún archivo)
Aquí una posible solución, se puede hacer mucho más corto, quitando las tabulaciones y los saltos de línea, pero así queda más visual de corroborar.

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(int argc, char **argv)
  5. {
  6. int i,n;
  7. char palabra[] = "#include <stdio.h>\n#include <string.h>\n\nint main(int argc, char **argv)\n{\n\tint i, n;\n\tchar palabra[] = \tn=strlen (palabra);\n\tpalabra[102]='\\0';\n\tprintf (\"%s \",palabra);\n\tpalabra[102]=' ';\n\tprintf (\"\\\"\");\n\tfor (i=0;i<n;i++)\n\t\tswitch (palabra[i])\n\t\t\t{\n\t\t\t\tcase '\\n':\n\t\t\t\tprintf (\"\\\\n\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\t':\n\t\t\t\tprintf (\"\\\\t\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\\\':\n\t\t\t\tprintf (\"\\\\\\\\\");\n\t\t\t\tbreak;\n\t\t\t\tcase '\\\"':\n\t\t\t\tprintf (\"\\\\\\\"\");\n\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\tprintf (\"%c\",palabar[i]);\n\t\t\t}\n\tprintf (\"\\\";\\n\");\n\tprintf (\"%s\", palabra+103);\n\treturn 0\n}";
  8. n=strlen (palabra);
  9. palabra[102]='\0';
  10. printf ("%s ",palabra);
  11. palabra[102]=' ';
  12. printf ("\"");
  13. for (i=0;i<n;i++)
  14. switch (palabra[i])
  15. {
  16. case '\n':
  17. printf ("\\n");
  18. break;
  19. case '\t':
  20. printf ("\\t");
  21. break;
  22. case '\\':
  23. printf ("\\\\");
  24. break;
  25. case '\"':
  26. printf ("\\\"");
  27. break;
  28. default:
  29. printf ("%c",palabra[i]);
  30. }
  31. printf ("\";\n");
  32. printf ("%s", palabra+103);
  33. return 0;
  34. }
  35.  


Título: Re: Programa que imprime su código
Publicado por: satu en 28 Agosto 2011, 22:16 pm
Eso se llamaba "quine" o algo así, no?? Es curioso


Título: Re: Programa que imprime su código
Publicado por: N0body en 28 Agosto 2011, 22:54 pm
Citar
Eso se llamaba "quine" o algo así, no?? Es curioso
Fijándome, así es, gracias por el dato. Acá pongo el link de la wikipedia: http://en.wikipedia.org/wiki/Quine_%28computing%29 (http://en.wikipedia.org/wiki/Quine_%28computing%29)


Título: Re: Programa que imprime su código
Publicado por: madpitbull_99 en 28 Agosto 2011, 23:49 pm
Los chicos de Visual Basic hicieron un reto que trataba de mostrar el codigo fuente del programa ejecutado:

[Reto] Show My Source Code. (http://foro.elhacker.net/programacion_visual_basic/reto_show_my_source_code-t319941.0.html;msg1582603#msg1582603)