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

سؤال في حلقات التكرار

مغلق
بدأه Great في 22 مارس 2005 · 3 رد · 539 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

#include <iostream.h>
main ()
{
	float a;
	cout<<"Enter a number : ";
	cin>>a;
	while (a>0)
	{
	cout<<"1/a = "<<1/a<<endl;
	cout<<"Enter a number : ";
	cin>>a;
	}
	cout<<"Finish"<<endl;
	return 0;
}

اذا أدخل المستخدم عددا موجبا يستمر عمل البرنامج بينما اذا أدخل عددا سالبا أو 0 أو حرفا يطبع فينيش و ينتهي البرنامج ..

كيف يمكنني جعل البرنامج يستمر مهما كانت المعطيات المدخلة ؟

مع عرض رسالة خطأ عند ادخال 0 ..

كذلك أريد أن أعرف كيفية اخراج قيم النسب المثلثية لعدد ما ؟

sinus . cosinus . tangent

و جعل البرنامج ينتهي عند ادخال E و Enter

؟؟؟؟؟؟؟؟؟

و السلام عليكم

تم تعديل هذه المشاركة بواسطة Great في 22 مارس 2005 في 14:08

#2

أنظر إلى:

 while (a>0)

هذا هو شرط الاستمرار, يعني إذا حصل عكسه فسيتقف الحلقة.

لاحظ ان a هو متغير يدخله المستخدم, و a > 0 تعني ان شرط الاستمرار ان الرقم اللذي يدخله المستخدم هو رقم موجب, لذلك إذا أدخل رقم سالب, انتفى الشرط و توقفت الحلقة.

إذا اردت انتهاء البرنامج عند إدخال E فبإمكانطك جعل شرط الاستمرار هو عدم إدخال E, يعني

while ( a != 'E' );

اما طباعة خطأ عند إدخال 0, تستطيع استخدام جملة if داخل الحلقة نفسها

 if ( a == '0' )
#3

شكرا لك يا أخ حسن الجودي

#include <iostream.h>
main ()
{
	float a;
	cout<<"Enter a number : ";
	cin>>a;
	while (a!=0)
	{
  cout<<"1/a = "<<1/a<<endl;
  cout<<"Enter a number : ";
  cin>>a;
	}
	cout<<"Maths Error !"<<endl;
	return 0;
}

و لكن مازالت المشكلة قائمة ..

اذا أدخل المستخدم 0 سيعرض البرنامج رسالة Maths Error !

ولن تستمر الحلقة

ثم اذا ادخلت حرفا ستتم طباعة أرقام و حرف e بدون توقف ..

(حمل البرنامج من المرفقات بعد تسجيل الدخول)

أريد ان تعود الحلقة الى التكرار و لو تم ادخال 0 (بعد عرض رسالة خطأ)..

ثم ضبط البرنامج على الخروج اذا تم ادخال حرف E و انتر ..

هل من مساعدة ؟

while.zip

تم تعديل هذه المشاركة بواسطة Great في 22 مارس 2005 في 18:57

#4

أها, لم انتبه ان a هو float,

الـ float رقم يعني لا تستطيع إدخال حرف e إلى float.

إذا اردت عدم تنفيذ الحلقة في حالة 0 دون الخروج منها فتستطيع استخدام continue

if( a == 0 )
continue;

continue تعني اهمل هذه الدورة و استمر في الدوران

ملاحظة:

أعتقد من الأفضل ان يبدأ a بقيمة 0

float a = 0;

عندما تدخل حرف الى a فإن البرنامج سيرفض لحرف, لكنه لن يحذفه من الـ input buffer يعني سيقى الحرف موجودا كأنه مدخلات, لكن لن يتم قبوله (و الله أعلم)

الحل ان تستخدم string لإدخال المعلومات ثم تحوله إلى رقم, في هذه الحالة تستطيع قبول جميع أنواع المدخلات.

يعن قم بعمل array مثلا

char input[128];

و قم باخذ المدخلات عن طريقه

cin >> input;

ثم حوله الى رقم:

a = atof(input);

و لتأكد من الحرف اللذي أدخله المستخدام تستطيع مثلا:

input[0] != 'E'

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 22 مارس 2005 في 19:14

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…