• 0
ahmed_ghanem

c++ارجو المساعده في فهمت خطوات عمل fot loop

سؤال

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


 


في كود بسيط وحاب افهم  خطوات عمله :)



for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++)
cout<<"*";
cout<<endl;

}


*
**
***
****
*****

طيب انا اشوف انه يدخل لوب الثانيه ويطبع *


وينزل سطر >endl


بعد هالخطوه وين يروح لوب الاولى او يبقى في الثانيه؟


وكيف طبع لي **


هذا سؤالي  والله يجزاك خير ولايحرمك الاجر يارب


0

شارك هذا الرد


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

2 إجابة على هذا السؤال .

  • 0

انظر أخي الكريم 

حلقة for تعمل كما يلي

for ( عمل نقوم به أول مرة نصادف الحلقة فقط ;  شرط نتحقق منه عند كل دورة للحلقة ; عمل نقوم به كلما انتهينا من دورة للحلقة ){العمل الذي نقوم به عند الدخول للحلقة}

عند بدء الحلقة الأولى يكون i = 1

وبما أن 1 أصغر أو يساوي 5 نتابع

 

والآن ندخل الحلقة الداخلية

ونبداً بـ j = 1

هل j أصغر أو يساوي i  التي تساوي 1 ؟ نعم

إذا ندخل الحلقة ونطبع *

ثم نزيد J فتصبح 2

هل J أصغر أو تساوي 1 ؟ لا , إذا نخرج من الحلقة الداخلية

ويبقى أن نطبع نهاية السطر .

 

والآن صرنا في الحلقة الخارجية  , ونريد إنهاء الدورة , ماذا نفعل ؟ نزيد العداد i  فيصبح 2

والآن نختبر شرط الحلقة الخارجية . هل i التي صارت 2 أصغر أو يساوي 5  ؟ نعم

إذاً نكرر العمل , ولكن ما هو العمل الذي يجب القيام به داخل الحلقة الكبيرة ؟ إنه الدخول للحلقة الصغيرة

نضع j=1  ونختبر هل 1 أصغر أو تساوي i التي تساوي 2 ؟   نعم , إذا نطبع *

نزيد j  فتصبح 2

نختبر الشرط  :  هل j التي أصبحت 2 أصغر أو تساوي i  التي قيمتها 2  ?  نعم  , إذا نكرر الحلقة ونطبع * أخرى

نزيد j  فتصير 3 

هل 3 أصغر أو تساوي i التي قيمتها  2 ? لا ,, إذا نخرج من الحلقة الداخلية , وننفذ تعليمة طباعة نهاية السطر

ثم تنتهي الحلفة الخارجية ..

نزيد i  فتصبح 3  ...

وهكذا في كل مرة .. إلى ان تصبح  i = 6  عندها لا يتحقق الشرط الخاص بالحلقة الخارجية , ونخرج منها

 

لتفادي عدم فهم الكود بشكل صحيح , اكتبه كما يلي

for(int i=1;i<=5;i++){    for(int j=1;j<=i;j++)    {        cout<<"*";    }cout<<endl;}

والله ولي التوفيق

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

شارك هذا الرد


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

الله يعطيك العافيه ,شرحك واضح

 

واعتذر منك على الاطاله الشرح الحمد لله :) وصلت الفكره

:lol: الاقواس { }  فرقت كثير

لاني هنا ماحطيت اقواس في لوب الثاني ومانفذ الامر سطر جديدendl

عشان يطبه ** بعد ماخلص من الوب نفذ endl

#include <iostream>using namespace std;int main(){    for(int i=1;i<=5;i++)    {    for(int j=1;j<=i;j++)    cout<<"*";    cout<<endl;    }    return 0;}

واذا حطيت قوس للوب الثاني

#include <iostream>using namespace std;int main(){    for(int i=1;i<=5;i++)    {    for(int j=1;j<=i;j++){    cout<<"*";    cout<<endl;    }    }    return 0;}

راح يطبع المخرجات بشكل خاطئ لانه يحسب cout<<endl;

 

الكود الي حطيه افضل مع الاقواس :)

#include <iostream>using namespace std;int main(){    for(int i=1;i<=5;i++)    {    for(int j=1;j<=i;j++){    cout<<"*";    }    cout<<endl;    }    return 0;}

اشكرك اخي العزيز والمعذره على الاطاله

ومره وحده الي مايعرفه هالشي يستفيد :wub: وبالتوفيق للجميع :thumbup:

0

شارك هذا الرد


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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

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

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