الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التحويل من الاستدعاء الذاتي الى for loop

مغلق
بدأه م.غسان في 30 نوفمبر 2003 · 8 رد · 1,514 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

لقد قمنا باخذ سؤال و هو عبارة عن حل لبرج هانوي المشهور و مفهوم السؤال كالتالي :

يوجد عندنا ثلاثة اعمده و العمود الاول فيه عدد من الديسكات مرتبه حسب الحجم من الاكبر الى الاصغر

المطلوب نقل هذه الديسكات الى العمود الثالث و بنفس الترتيب و واحد واحد بحيث ان يكون العمود

الثالث في النهاية كالعمود الاول . و للمساعده تم ايجاد عمود ثاني لاستخدامه كمخزن مؤقت .

مثال لو عندنا ديسكان في العمود الاول و نريد نقلهم الى العمود الثالث فالحل كالتالي :

2<--1

3<--1

3<--2

اما لو كان عندنا ثلالث ديسكات فالحل :

3<--1

2<--1

2<--3

3<--1

1<--2

3<--2

3<--1

و هكذا المطلوب عمل برنامج لنقل 64 ديسك من العمود الاول الى الثالث .

لقد قمت بعمل البرنامج باستخدام الاستدعاء الذاتي للداله و هو كالتالي :

#include<iostream.h>

void towers (int n, int source, int dest, int spare);

void towers (int n, int source, int dest, int spare)

{

if (n == 1)

cout << "Move disk from peg " << source << " to peg " << dest << endl;

else

{

towers(n-1, source, spare, dest);

towers(1, source, dest, spare);

towers(n-1, spare, dest, source);

}

}

void main()

{

int num;

cout << "Enter number of disks to move : ";

cin >> num;

towers(num, 1, 3, 2);

}

و لكن للأسف مدرس الماده يريد الحل باستخدام الفور لووب فهل من الممكن ذلك

مع حد علمي انه اي سؤال يحل بالاستدعاء الذاتي من الممكن ان يحل ب

for loop

و شكرا

الرجاء ممن عنده اي مساعده الرد بسرعة

بانتظار ردكم حتى الفجر

#2

اين انتم يا خبراء البرمجه

للرفع

#3

على ما يبدو انه السؤال صعب عليكم .

#4

السلام عليكم ,,,

أخي م.غسان يبدو أنك نجحت فعلا في استفزازنا ,,,

سؤالك ليس سهلا ,,, وليس صعبا ,, فقط يحتاج لبعض التفكير ,,

ليس الامر أن أي شخص يتقن لغة البرمجة سيعرف يحل أي سؤال ,, أسئلة التفكير تختلف عن أسئلة المعرفة ,,,

والسبب الذي يدعو أي شخص لعدم المحاولة أن التفكير يحتاج لوقت ,, وهو مالايملكه الكثيرون ,,

فالوقت ضيق جدا لدرجة أن الواحد لايكاد يستطيع أن يجيب على أسئلة هذا المنتدى فقط ,,

المهم أعدك أني سأحاول أن أجيب هذا المساء واذا استطعت ستجد الحل غدا وحتى يجسبك شخص اخر ,,,

واذا لم أستطع سأكتب لك وأخبرك بما حدث ,,,

بالنوفيق ,,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

مشكور يا أخ HGB على ردك و انا بانتظار الحل و ربنا معاك .

الحقيقة لقد وجدت حل السؤال و كان الحل باستخدام ال struct

و هذا ما لم نأخذه الى حتى الآن .

فأرجوا من الجميع التعاون على حل هذه المشكلة و انا متأكد أن الحل سيكون بضعة اسطر و لن يتجاوز اكثر من اربع جمل for loop

و ربنا يوفقكم.

و الله في عون العبد مادام العبد في عون اخيه.

#6

السلام عليكم ,,

أخي العزيز م.غسان ,, بارك الله فيك ,,

اقتباس
الحقيقة لقد وجدت حل السؤال و كان الحل باستخدام ال struct

اذا وجدت الحل فعلا فنرجو منك توضيحه ,,, ليستفيد الجميع ,,

ويمكن لمن يرغب أن يفكر كثيرا أن يفكر ,, في الحل ,, :)

وبالتوفيق ,,,

تم تعديل هذه المشاركة بواسطة HGB في 2 ديسمبر 2003 في 13:18

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

الحل في الملف المرفق

hanoi_towers.txt

#8

و لكن أتمنى أن نجد الحل باستخدام الفور لووب فقط .

#9

شو وين الهمّه يا شباب

هذا الموضوع مغلق.

مواضيع مشابهة