السلام عليكم
ممكن اعرف كيف يمكن عمل برنامج بلغه السي اوالسي بلاس يقوم بطباعه نفسه اي ان المخرجات للبرنامج تكون هي المدخلات التي ادخلتها في البرنامج
السلام عليكم
ممكن اعرف كيف يمكن عمل برنامج بلغه السي اوالسي بلاس يقوم بطباعه نفسه اي ان المخرجات للبرنامج تكون هي المدخلات التي ادخلتها في البرنامج
تم تعديل هذه المشاركة بواسطة time1 في 30 أبريل 2008 في 16:11

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
اذا كنتي تقصدي طباعة نفس تعليمات البرنامج فتفضلي هذا المثال :
#include <string>
#include <iostream>
using namespace std;
string escape(const string & s) {
string ret(s);
string::size_type i = 0;
while ((i = ret.find_first_of("\\\"", i)) < ret.length()) {
ret.insert(i, "\\");
i += 2;
}
return ret;
}
int main() {
static const string self[] = {
"#include <string>",
"#include <iostream>",
"using namespace std;",
"",
"string escape(const string & s) {",
" string ret(s);",
" string::size_type i = 0;",
" while ((i = ret.find_first_of(\"\\\\\\\"\", i)) < ret.length()) {",
" ret.insert(i, \"\\\\\");",
" i += 2;",
" }",
" return ret;",
"}",
"",
"int main() {",
" static const string self[] = {",
" };",
" for (int i = 0; i < (sizeof self / sizeof *self); ++i) {",
" cout << self << endl;",
" if (i == 15) {",
" for (int j = 0; j < (sizeof self / sizeof *self); ++j) {",
" cout << \" \\\"\" << escape(self[j]) << \"\\\",\" << endl;",
" }",
" }",
" }",
" return 0;",
"}",
};
for (int i = 0; i < (sizeof self / sizeof *self); ++i) {
cout << self << endl;
if (i == 15) {
for (int j = 0; j < (sizeof self / sizeof *self); ++j) {
cout << " \"" << escape(self[j]) << "\"," << endl;
}
}
}
return 0;
}تم تعديل هذه المشاركة بواسطة time1 في 1 مايو 2008 في 07:56

اشهد ان لا إله إلا الله وان محمدا ً رسول الله