const char procenat[] = "%", navodnik[] = "\"", obrnuta_kosa_crta[] = "\\";
#include <iostream>
using namespace std;
const char red[][100] = {
"const char procenat[] = %",
"%, navodnik[] = %",
"%%, obrnuta_kosa_crta[] = %",
"%;",
"#include <iostream>",
"using namespace std;",
"const char red[][100] = {",
"%%",
"};",
"void ispisi_red(int red_num, bool kraj_reda = true)",
"{",
" int i;",
" for (i=0; red[red_num][i]!=0; i++)",
" cout << (red[red_num][i]==procenat[0] ? navodnik[0] : red[red_num][i]);",
" if (kraj_reda)",
" cout << endl;",
"}",
"int i;",
"int main()",
"{",
" ispisi_red(0, false);",
" cout << procenat;",
" ispisi_red(1, false);",
" cout << obrnuta_kosa_crta;",
" ispisi_red(2, false);",
" cout << obrnuta_kosa_crta << obrnuta_kosa_crta;",
" for (i=3; i<7; i++)",
" ispisi_red(i);",
" for (i=0; red[i][0]!=0; i++)",
" cout << navodnik << red[i] << navodnik << %,% << endl;",
" for (i=7; red[i][0]!=0; i++)",
" ispisi_red(i);",
"}",
""
};
void ispisi_red(int red_num, bool kraj_reda = true)
{
int i;
for (i=0; red[red_num][i]!=0; i++)
cout << (red[red_num][i]==procenat[0] ? navodnik[0] : red[red_num][i]);
if (kraj_reda)
cout << endl;
}
int i;
int main()
{
ispisi_red(0, false);
cout << procenat;
ispisi_red(1, false);
cout << obrnuta_kosa_crta;
ispisi_red(2, false);
cout << obrnuta_kosa_crta << obrnuta_kosa_crta;
for (i=3; i<7; i++)
ispisi_red(i);
for (i=0; red[i][0]!=0; i++)
cout << navodnik << red[i] << navodnik << "," << endl;
for (i=7; red[i][0]!=0; i++)
ispisi_red(i);
}
Napominjem da je prazan red na kraju programa bitan da bi izlaz (ako ga preusmerimo u neku datoteku) bio identičan originalnom izvornom kodu.