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

احتاج مساعدة بخصوص For Loop

بدأه fatimah في 11 أكتوبر 2008 · 26 رد · 4,786 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني واخواتي

احتاج لمساعدة من له خبرة بلغة سي++

كيف اكتب برنامج يعطيني هذي النتيجة

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

بحيث يكون شكل النجوم على شكل هرم

هذي محاولة مني

int n =5;

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

بس النتيجة طلعت غير المطلوبة

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

وشكرا

تم تعديل هذه المشاركة بواسطة fatimah في 11 أكتوبر 2008 في 21:16

#2
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  
  9. int n =10;
  10.  
  11. for(int i=1; i<n+1;i++)
  12. {
  13. if (i%2==0) continue;
  14. cout << endl;
  15. for(int j=1; j<i+1; j++)
  16. cout << "*";
  17. }
  18. return 0;
  19. }
  20.  
  21.  
  22.  

الشرح:

1/الحلقة الكبرى تتوقف عند 10 و ليس 5 (لأننا سنقوم بطباعة 5 أسطر من أصل 10)

2/ لما يكون العدد زوجي فإننا لا نقوم بإظهار النجمات و يتم ذلك عن طريق الأمر continue

لفهم الأمر continue

اقرأي الموضوع التالي:

Continue, كيف تعمل الكلمة continue

ملاحظة: هذا السؤال يخص c++ العادي فرجاء اطلبي من أحد المشرفين نقله إلى المكان المناسب

تم تعديل هذه المشاركة بواسطة djug في 11 أكتوبر 2008 في 21:29

#3

شكرا جزيلا اخي على الرد

ولكن النتيجة ليست كما المطلوبة

مع العلم اني لم ادرس عن الامر continue

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

يجب ان تكون النجوم على شكل هرم

لدي فكرة وهي طباعة مسافة قبل النجوم

ولكن لا اعرف كيف انا احاول على هذا السؤال من ايام

هل احتاج الى فور لووب ثالث

هل احتاج الى multidimensional array

هل احتاج بوينترpointers

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

انا اصلا ما عندي خبرة مع الفور لووب ولا السي++

وباقي على امتحاني الفاينال في هالمادة اقل من 12ساعة :S الله يستر

شكرا جزيلا اخي الكريم اقدر اهتمامك للمساعدة

#4
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.  
  9. int n =7;
  10. static int l=3;
  11.  
  12. for(int i=1; i<n+1;i++)
  13. {
  14. if (i%2==0) continue;
  15. cout << endl;
  16. for(int k=0;k<l;k++)cout << " ";
  17. l--;
  18. for(int j=1; j<i+1; j++)cout << "*";
  19.  
  20. }
  21. return 0;
  22. }
  23.  
  24.  

تم تعديل هذه المشاركة بواسطة djug في 12 أكتوبر 2008 في 19:56

#5

هذه طريقة أخرى :

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. for(int i=0; i<=3 ;i++)
  6. {
  7. for(int t=3-i;t>=0;t--,cout<<" ");
  8. for(int j=1; j<=(2*i)+1;j++,cout<<"*");
  9. cout <<endl;
  10. }
  11. return 0;
  12. }
  13.  

tvquran_6.gif

#6

هذه محاولتي

#include <iostream>
using namespace std;

void main()
{
    int floors, base_width;
    cout << "enter triangle width   : ";
    cin >> base_width;
    cout << "enter number of floors : ";
    cin >> floors;
    int midline = base_width / 2;
    cout << "width = " << base_width << " , floors = " << floors << "\n";
    for (int i = 1; i <= floors; i++)
    {
        int stars = int(float(base_width) * (float(i) / float(floors)));
        if(stars == 0) 
        {
            stars = 1;
        }
        int spaces = midline - (stars / 2);
        for (int j = 0; j < spaces; j++)
        {
            cout << " ";
        }
        for (int k = 0; k < stars; k++)
        {
            cout << "*";
        }
        cout << endl;
    }
}
}

وبالمناسبة ، كيف تدرجون صناديق الشفرات الملونة ؟

تم تعديل هذه المشاركة بواسطة عمـــرو في 12 أكتوبر 2008 في 19:19

#7

اشكركم اخواني djug وفهد وعمرو

انا اسفة تعبتكم معاي ولكن جميع الاكواد عطتني نفس النتيجة وهي :

******^^^^

ليش ماعرف

هل هذي نفس النتيجة اللي حصلتو عليها في اجهزتكم؟؟؟؟؟؟؟

ماادري يمكن المشكلة من عندي

على فكرة انا استخدم mingw compiler for c++

and crimson editor to type my codes

هل تفرق يعني لو كنت استخدم سوفتوير اخر ؟ماعتقد!!!

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

شكرا جزيلا

#8

إليك النتيجة

1223831254.jpg

بخصوص الـ IDE

أنصح باستعمال code::blocks

موجود على

http://www.codeblocks.org/

هناك موضوع يقارن بين الـ IDE هنا في المنتدى ابحثي عنه

اقتباس
وبالمناسبة ، كيف تدرجون صناديق الشفرات الملونة ؟

ضع الكود بين

[g code=cpp]

و

[/g code]

(قم بمسح المسافة الموجودة بعد الحرف g)

تم تعديل هذه المشاركة بواسطة djug في 12 أكتوبر 2008 في 20:26

#9
djug كتب:
إليك النتيجة

1223831254.jpg

بخصوص الـ IDE

أنصح باستعمال code::blocks

موجود على

http://www.codeblocks.org/

هناك موضوع يقارن بين الـ IDE هنا في المنتدى ابحثي عنه

ضع الكود بين

[g code=cpp]

و

[/g code]

(قم بمسح المسافة الموجودة بعد الحرف g)

شكرا جزيلا اخوي على اهتمامك بالمساعدة

الله يوفقك

تم تعديل هذه المشاركة بواسطة fatimah في 12 أكتوبر 2008 في 20:41

#10

مرحبا

المشاركة 8 للأخ djug صحيحة.

بس مو عيب هيك سؤال ما ينحل مع أغلب الشباب.. يا حيف :lol:

تاني مرة نادولي لأنو هاد شغلي :haha:

Doried Abd Allah

Prelware D&D Association

Lattakia/Syria

#11

جميع الكودات تعمل المطلوب فقط اختلاف في الاسلوب.

تأكد من مطابقة الكود.

tvquran_6.gif

#12

مرحبا

اقتباس
جميع الكودات تعمل المطلوب فقط اختلاف في الاسلوب.

لم أجرب الأكواد كلها لكن جربت بعضها ووجدت أخطاء منطقية.

على كل.. خلص امتحان الأخت وما نفع الكلام :(

Doried Abd Allah

Prelware D&D Association

Lattakia/Syria

#13
اقتباس
لم أجرب الأكواد كلها لكن جربت بعضها ووجدت أخطاء منطقية

الجميع هنا يبحث عن الفائدة اتمنى منك أخي ان توضح الاخطاء المنطقيه التي وجدتها من اجل ان نتلافاها مستقبلا إن شاء الله.

tvquran_6.gif

#14
اقتباس
لم أجرب الأكواد كلها لكن جربت بعضها ووجدت أخطاء منطقية.

على كل.. خلص امتحان الأخت وما نفع الكلام

لا وجود لأية أخطاء منطقية في الشيفرات الثلاثة

بخصوص شيفرة الأخ فهد الشلوي فهناك مشكل في الـ tag المستعمل (gcode) تحقق بعد عملية النسخ من وجود علامات + في مكانها (جربت الكود و وجدته يشتغل جيدا)

أعتبر هذا الكود أفضل الثلاثة لقلة عدد سطورها

أما عن شيفرة الأخ عمرو فتوجد أخطاء صغيرة في الكتابة فقط (ليست أخطاء منطقية) : نسي أن يكتب int قبل الدالة main إَضافة إلى كتابة الكلمة namespace بـحرف N كبير

#15

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

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

اخي ياليت توضح الاخطاء المنطقية اللي تكلمت عنها في اكواد الاخ فهد ومنكم نستفيد

واذا عندك رأي لحل السؤال ياليت تتفضل فيه واكون شاكرة لك اخي

انا كمان لسه ماخلصت دراسة السي++ ولسه عند مادة سي++ السمستر الجاي ان شاء الله

وان شاء الله راح اكثر مشاركاتي في هالمنتدى المفيد خلال الاجازة استعدادا لحرب السي++ القادمة

تعليق على الاخ djug فعلا كلامك اخي انا كمان وجدتها اسهل لانها كماناقرب من الطريقة اللي تعلمتها وفهمتها كلها ولله الحمد

مع ذلك انا ماسمعت قبل عن الامر continue فتعلمت شي جديد وشكرا لك اخي

شكرا لاخ فهد واخ عمرو

#16

نعم أخي djug الشفرة التي كتبتها تعمل جيدًا وأنا لم أضعها إلا بعد أن جربتها أولاً ، والدالة main جعلتها لا ترجع قيمة وبالتالي سبقتها ب void فليس شرطًا أن ترجع int. والكلمة n amespace يحولها المنتدى تلقائيًا إلى namespace حتى داخل صناديق الشفرة ، وهذا خطأ في المنتدي.

الشفرة التي كتبتها أطول قليلاً لكنها مرنة ، بمعنى أنك يمكنك إدخال أي قيم لأبعاد المثلث وسيرسم البرنامج المثلث على أي حال ، وليس محصورًا في قيمة محددة سلفًا لا يمكن تغييرها. وللوصول إلى هذه المرونة يجب أن تكون الشفرة أطول قليلاً ، هذه هي ضريبة لا بد من دفعها. هذا غير طريقتي في الكتابة حيث أفضل أن تكون الشفرة أوضح وإن كانت أطول.

شكرًا لكم جميعًا.

#17

يمكن أن نختصر الشفرة كالتالي وستؤدي نفس الوظيفة ، فقط غير القيم من البرنامج ثم أعد الترجمة :

  1. #include <iostream>
  2. using namespace std;
  3. void main()
  4. {
  5. int floors = 5;
  6. int base_width = 9;
  7. for (int i = 1; i <= floors; i++, cout << endl)
  8. {
  9. int stars = int(float(base_width) * (float(i) / float(floors)));
  10. int spaces = (base_width - stars) / 2;
  11. for (int j = 0; j < spaces; j++, cout << " ");
  12. for (int k = 0; k < stars; k++, cout << "*");
  13. }
  14. }
  15.  

#18

مرحبا مجددا:

حابب إطرح تعريف أولا للإفادة :

الخطأ المنطقي : خطأ لايكتشفه البرنامج.. لأنه ليس خطأ لغويا.. بل منطقيل هو صحيح, لكن لا يعطي النتائج المطلوبة من البرنامج كما هي.

على ذلك :

أحد الإخوان قال بأن الأكواد كلها صحيحة.

(طبعا أنا لا أقصد الشيفرات الثلاثة التي ذكرها الأخ إنما أقصد الشيفرات جميعها ربما لم يفهم قصدي9

إلا أن المشاركة 2 مثلا تحوي كود خاطئ.. لا يعطي شكل هرم فهو يحوي خطأ منطقي صح؟

رح حاول ارسل شوية مشاركات أو تجارب..

Doried Abd Allah

Prelware D&D Association

Lattakia/Syria

#19

مرحبا إليكم هذه المحاولة :

#include<iostream.h>
int main()
{  int n;
	cin >> n;
	n=n*2;
	int st = n/2 , en= st;
	for(int i=0;i<n;i++)
	{	for(int j=0;j<=en;j++)
		{
			if(j>=st && j<=en )
				cout << "*";
			else
				cout << " ";
		}
	st--;en++;
	cout << endl;
	if (en==n) break;
	}
}

تم تعديل هذه المشاركة بواسطة دريد عبد الله في 13 أكتوبر 2008 في 19:26

Doried Abd Allah

Prelware D&D Association

Lattakia/Syria

#20

جميل جدا أخي بارك الله فيك لكن ايضا الكود به خطاء!

يجب ان تضيف retun 0; للبرنامج.

لكن الكود فكرته طيبه.

بارك الله فيك.

tvquran_6.gif

#21

اخ دريد شكرا لك الكود رائع جدا

واضح انه فعلا شغلك وخبير بالسي++

#22
عمـــرو كتب:
نعم أخي djug الشفرة التي كتبتها تعمل جيدًا وأنا لم أضعها إلا بعد أن جربتها أولاً ، والدالة main جعلتها لا ترجع قيمة وبالتالي سبقتها ب void فليس شرطًا أن ترجع int. والكلمة n amespace يحولها المنتدى تلقائيًا إلى namespace حتى داخل صناديق الشفرة ، وهذا خطأ في المنتدي.

الشفرة التي كتبتها أطول قليلاً لكنها مرنة ، بمعنى أنك يمكنك إدخال أي قيم لأبعاد المثلث وسيرسم البرنامج المثلث على أي حال ، وليس محصورًا في قيمة محددة سلفًا لا يمكن تغييرها. وللوصول إلى هذه المرونة يجب أن تكون الشفرة أطول قليلاً ، هذه هي ضريبة لا بد من دفعها. هذا غير طريقتي في الكتابة حيث أفضل أن تكون الشفرة أوضح وإن كانت أطول.

شكرًا لكم جميعًا.

اخي عمرو شكرا لك على المساعدة

اخي انا في البداية لما جيت اشغل البرنامج طلع لي خطأ بان الدالة main must return int

يعني مايصير تكون void

ال compiler لايقبل لذلك غيرت الى integer وضبطت معاي

اخي انا اعرف انه مو كل مترجمات السي++ سواء لذلك احب اعرف ايش compiler اللي تستخدمه اخي الكريم

#23
اقتباس
مرحبا

المشاركة 8 للأخ djug صحيحة.

بس مو عيب هيك سؤال ما ينحل مع أغلب الشباب.. يا حيف

تاني مرة نادولي لأنو هاد شغلي

اخي الكريم عن جد ابدعت وشهادتك كخبير سي++ انه مو عيب اغلب الشباب ما يعرفوه زرعت لي الثقة بقدراتي البرمجية في السي++

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

وكمان نحن درسنا السي++ من الصفر في هذي المادة واخر السمستر يجيبو سؤال تعجيزي صراحة الاستاذ اللي حط هالسؤال ماعنده ضمير الله يهيده

بس الحمد لله امتحاني عدى على خير ولو اني موواثقة منه الله يستر الحمد لله على كل حال

شكرا لك اخي الكريم

صراحة الكود ابدااااع

اما تكون خبير سي++ او عبقري جدا

#24

مرحباً أخواني الكرام:

أخي الكريم فهد :

بالنسبة لكلمة return 0;

بعض المترجمات ترسل رسالة تنبيه بوجوب هذا مثل المترجم اللذي أملكه turbo c++ 4.5 ولا تعتبره خطأ

و بعضها يعتبره خطأ قاتل ربما.

لكن المهم الفكرة الخوارزمية.

الأخت فاطمة :

أشكرك جزيلا على هذه الكلمات التي أعادت لي الثقة بعد أن خيب بعض أعضاء منتدى التقنيات الجديدة أملي بنفسي و بهم..

بالنسبة لموضوع الخبرة : صدقيني أختي حل مثل هذه المسألة لا يتطلب خبرة كبيرة.. ستكتشفين هذا في المستقبل القريب إن

شاء الله.

الخبرة تأتي من حل المسائل مسألة تلو الأخرى و بالتدريج حسب الصعوبة..

يعني هناك مسائل أصعب من هذه ب50 مرة (إن كان للصعوبة مقياس) و هناك أصعب ب 100 مرة و هناك أكثر.

وهناك خوارزميات متعددة لحل المسائل منها الخوارزميات العودية و الخوارزميات التراجعية و غيرهما الكثير..

هناك عدة مواقع تفيدك في تطوير خبراتكم البرمجية منها موقع الأولمبياد الأمريكي للمعلوماتية :

http://ace.delos.com/usacogate

سجلي أختي عضويتك و استلمي إيميل ثم باشري بحل المسائل..

ولاحظي الفرق في درجة الصعوبة.

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

وخصوصا عندما يحلها الطالب بدون مساعدة أحد و عندما يكتشف خوارزمية الحل بنفسه.

الموقع رائع جدا و أغلب مسائل الأولمبياد الدولي تقتبس منه و من بعض المواقع العالمية المشابهة.

وتعتمد على الموقع الكثير من الفرق المشاركة في الأولمبياد المعلوماتي الدولي في تدريس طلابها و اختيار المشاركين..

باختصار الموقع هام و رائع جدا.

يعني حلي أختي أول مسألتين من الموقع ولاحظي مدى سخافة الكود الذي قدمته أنا :lol:

تم تعديل هذه المشاركة بواسطة دريد عبد الله في 14 أكتوبر 2008 في 19:31

Doried Abd Allah

Prelware D&D Association

Lattakia/Syria

#25

شكرا اخي الكريم على المعلومة انا توني بالبداية لدرجة اني ماكنت اعرف ان في مواقع زي كذا

شكرا اخي الكريم ربي يوفقك ويجزاك خير يارب

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