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

مشكلة بال for loop

مغلق
بدأه hithamjj في 1 مارس 2007 · 12 رد · 907 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ارجو المساعدة في اول موضوع الي بالمنتدى :)

مشكلتي مع ال for loop

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

وكتبت الكود التالي

#include <iostream.h>
#include <math.h>
void main (){
	double i=1,x,z;
start:
	z=0;
	cout<<"Enter your number:";
	cin>>x;

	for (i=0;i<=x;pow(10,++z)){

	}
	cout <<"                       reslt :"<<z<<endl;
goto start;
}

ومشكلتي كانت انه جملة التكرار را تضل شغالة للا نهاية

استبدلتها بالكود التالي

#include <iostream.h>
#include <math.h>
void main (){
	double i=1,x,z;
start:
	z=0;
	cout<<"Enter your number:";
	cin>>x;

	for (i=0;i<=x;){
i=pow(10,++z);			
	}
	cout <<"                       reslt :"<<z<<endl;
goto start;
}

وانحلت المشكلة

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

حد يساعدني

لو ممكن

#2

الأخ الفاضل ...

فى الكود الأول ، انت تأخذ قيمة (x) من المستخدم فى السطر [cin>>x]، ثم تدخل loop التالية [{} ((for (i=0;i<=x;pow(10,++z]، دون أى عملية على المتغير (i) - وبالتالى اذا أدخل المستخدم قيمة اكبر من أو يساوى صفر للمتغير (x)، سيبقى الشرط (i<=x) صحيحاً للأبد ، وبالتالى حلقة للا نهاية.

أما المثال الثانى، فأنت أعطيت قيمة جديده للمتغير (i)، وبالتالى تتغير قيمتة، إلا أن يصبح الشرط غير صحيح، ولا تدخل فى حلقة للا نهاية.

ولجعل المثال الأول مثل الثانى (فى التنفيذ) قم بتغير سطر for إلى [{} ((for (i=0;i<=x;i=pow(10,++z]

كذلك يمكن تنفيذ ذلك بطريقة أخرى بدون لأستخدام for وبأستخدام الدالة log10 بدل من pow:

#include <iostream.h>
#include <math.h>
void main ()
{
	double	x;
	int	z;

start:
	z=0;
	cout<<"Enter your number:";
	cin>>x;
	z=(int)log10(x)+1;
	cout <<"                       reslt :"<<z<<endl;
goto start;
}

وحيث أن goto غالباً لا تستخدم فى لغة C فيمكن استخدام do...while:

#include <iostream.h>
#include <math.h>
void main ()
{
	double	x;
	int	z;

	do
	{
		cout<<"Enter your number:";
		cin>>x;
		z=(int)log10(x)+1;
		cout <<"                       reslt :"<<z<<endl;
	}
	while(x>0);
}

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#3

اخي Eng. Usama El-Mo

شكرا الك :)

فعلا حلي الي المسكلة

بس انت هيك فتحت ع حالك بوابة الاسئلة

:rolleyes: شو ذنبي انا مبتدئ برمجة

يعني بدي اضل اسال كتير :lol:

على كل حال يعطيك العافية خيي

#4

السلام عليكم

اخوي انتبه من استعمال الـ goto

عندنا دكتور لو تحط هالكلمة اعطاك F

حاول التخلص منها

#5

السلام عليكم ..

أود السؤال عن هذه التعليمة حقيقة : GOTO ..

هل هي موجودة في ++C أو في C فقط أم موجودة في الإثنتين ؟

أعتقد أن هذه التعليمة موجودة في Basic و لكن لم أستخدم هذه اللغة منذ زمن طويل جداً

فهل تستخدم هذه التعليمة حتى الآن ؟ :blink:

تحياتي

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 2 مارس 2007 في 13:16

#6

اخي NullFlag شكرا عالمرور وشكرا عالنصيحة

انا راح اعمل بنصيحتك واتخلص من عادة goto :)

وطبعا اخي Khaled.Alshaya نورت الموضوع بردك بس انت بتسخر من لغة basic !! :(

هاي الشاشة الزرقاء هي السبب الي خلاني احب الكمبيوتر والبرمجة

اما استخدامي لجملة goto وهي جملة القفز البرمجي "انا بسميها هيك" فانا ما بستخدما

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

صحيح :الاخ NullFlag حكا انو الدكتور عندهم ما بتعجبو جملة goto مع انها موجودة بالسي ++

اما تكون المشكلة بالسي :rolleyes: او بالدكتور

تم تعديل هذه المشاركة بواسطة hithamjj في 2 مارس 2007 في 21:08

#7

أهلين أخ hithamjj

اقتباس
وطبعا اخي Khaled.Alshaya نورت الموضوع بردك بس انت بتسخر من لغة basic !!

هاي الشاشة الزرقاء هي السبب الي خلاني احب الكمبيوتر والبرمجة

أي سخرية يا رجال :lol: ,, في حدا ينسى أيام البيسك :rolleyes:

البرامج الوحيدة اللي أحتفظ فيها هي برامج الـ QBasic من أيام المرحوم MS-DOS :lol:

تحياتي ..

#8

مشكلكتك الوحيده اخي الكريم في البرنامج الاول انك نسيت على ما يبدو أن تضع الاتي

  for (i=0;i<=x;i=pow(10,++z)){

مانسيته هو i=

تم تعديل هذه المشاركة بواسطة الامبراطور في 3 مارس 2007 في 15:28

#9
Eng. Usama El-Mokadem كتب:
ولجعل المثال الأول مثل الثانى (فى التنفيذ) قم بتغير سطر for إلى [{} ((for (i=0;i<=x;i=pow(10,++z]

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#10

السلام عليكم

اهلا بجميع الاخوان.

لدي تعليق بالنسبة لسؤال الاخ خالد

نعم كامة goto كلمة محجوزة وتستطيع استخدامها في لغة السي وc++ ولكن ( انتبه) افهم كلامي ان استخدام هذه الكلمة goto تعني ان ينتقل البرنامج في التنفيذ من السطر الموجود به الى العنوان المحدد بعد جملة goto ولكن هذه الجملة لايستخدمها المبرمجون ابداً الا ((( في اضيق الظروف وفي احلك الحالات عندما لايجدي اي امر اخر غير استخدمها))) لان بعض المبرمجين يعتقدون ان وجود مثل هذه التعليمة في البرنامج دليل ضعف في البرنامج ويكون اجدر بالمبرمج ان يغير هذه التعليمة باي تعليمة او دالة اخرى لانه يغير التسلسل التنفيذي في البرنامج.

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

مع السلامه.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#11

السلام عليكم

شكراً جزيلاً أخ السهم الناري على التوضيح

تحياتي ..

#12

اخي الحبيب لا اعتقد اني ساجيبك افضل من اخي Eng. Usama El-Mokadem لاني ارى اجابته واضحة وانصحك بان تتحاشى استخدامgoto لاني اشعر بانها غير مريحة واي خطا فيها يمكن ان لايعطيك النتيجة المطلوبة والمدرسين عندنا يحذرون من استخدامها ويعتبرونها خطأ حتي لو كانت استخدامها صحيح.

#13

اخواني شكرا على التفاعل والمشاركة

وشكرا على النصائح

بالمناسبة انا اعطيت التمرين للدكتورة بالجامعة عشان نناقشة لانا على ابةاب امتحانات حبيت زملائي يستفيدو منو

ثاني يوم شب صاحبي بقلي انت من ةين جبت التمرين قلتلو انا كتبو

قلي كذاب انا شفتو عالانترنت "الفريق العربي للبرمجة "

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

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