مصطفى 36a2

تحدّي الحرف الواحد !

10 ردود في هذا الموضوع

السلام عليكم ورحمة الله وبركاته ...

التحدي بسيط جداً في قواعده ... يحتاج إلى التفكير بشدّة ...
الكود أسهل مما تتوقع :)
الكود بلغة C و باستخدام المصرّف gcc ( ما يهم ... المهم انه يعمل بشكل طبيعي )

int i, n=42;main() {  for(i=0; i<n; i--) {    printf("*");  }}

المطلوب :
أن يطبع الكود 42 نجمة بالضبط .... لا أكثر ولا أقل ... ولا أي شيء آخر ... فقط 42 نجمة ... فقط فقط فقط ... وبالضبط :)
الأدوات :
يمكنك فقط ...
1- حذف محرف واحد فقط لا غير ... (المحرف هو أي حرف أو رقم أو فراغ موجود في الكود )
(أو )

2- زيادة محرف واحد فقط لا غير ...
(أو )
3-استبدال محرف واحد فقط بمحرف آخر ..

بصيغة أخرى : عندما تضع الحل .. يجب أن يكون هناك محرف واحد فقط متغيّر إما زائد أو ناقص أو مستبدل ...
هذه هي المسألة ... والسؤال مفتوح حتى يوم الجمعة القادم :)
بالتوفيق

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

 

كيف الحال مصطفى

 

- عداد الحلقة ينقص بمقدار 1 إذاً سيتم وضع إشارة سالب للعدد 42 .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلا أخي الحبيب :)
لو وضعنا اشارة سالب للعدد 42 فلن ندخل الحلقة :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

int i, n=42;

main() {

for(i=0; -i<n; i--) {

printf("*");

}

}

تم تعديل بواسطه fouad2008
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ممكن أيضاً تبديل < بـ+:

int i, n=42;main() {  for(i=0; i+n; i--) {    printf("*");  }}

إذا صارت قيمة i = -42 سيصبح جمعها مع n صفر وستتوقف.

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما شاء الله ... أحسنتما .. أخي فؤاد والأخ Mr.B ...
لا يزال هناك حل ثالث وسيعجبكما :)
بالتوفيق :)

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
لو وضعنا اشارة سالب للعدد 42 فلن ندخل الحلقة :)

- :wacko: لهذه الدرجة فقدنا التركيز .

 

الحل الثالث تبديل عداد الحلقة i-- إلى n-- وبالتالي عند وصول المتغير n للصفر يكون الشرط i<n هو 0<0 غير محقق فيتم الخروج من الحلقة .

تم تعديل بواسطه ahmedsaoud31
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
int i, n=42;main() {  for(i=0; i<n; i++) {    printf("*");  }}

هل تعتبر ++ او -- محرف واحد؟

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

استبدل i ب n فى الشرط

#include <cstdio>int i, n=42;int main(){    for(i=0; i<n; n--)    {        printf("*");    }}
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ما شاء الله :)
أخي أحمد سعود والأخ الأكبر محمد فتحي :) الحل صحيح تماماً ممتاز :)
استاذ سامر .. لا يمكنك استبدال محرفين معاً ... ولكن محاولة جيدة :)
 

انتهت الحلول لهذه المسألة .. خصوصاً ان حلاً يعتمد الحذف غير موجود ( على حد علمي على الأقل) ولكن هذه هي القواعد على أي حال ...

 

شكراً لجميع المشاركين :)

 

بارك الله فيكم جميعاً

والسلام عليكم ورحمة الله وبركاته

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .