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

( ساعدوني )مشروع يطلب مني الكشف عن المدخلات هل هي من نوع int أو char

مغلق
بدأه fun0o0 في 1 يناير 2007 · 10 رد · 1,294 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أنا مبتدئ في تعلم لغة c++ وأتمنى تساعدوني في انشاء هذا البرنامج البسيط في نظري ولكني لا أعرف كيف ابدأ وماهي الدوال التي سأستخدمها فأرجو مساعدتي ولكم مني جزيل الشكر والعرفان ...

المطلوب من البرنامج هو الآتي :

1- ادخال قيمة اما أن تكون ارقاما أو حروفا أو كلاهما .

2- يفحص البرنامج المدخلات ويحدد هل هي أرقام أو حروف أو كلاهما .

3- يعطيني خياران في الأخير أولا ادخال مدخل آخر , ثانيا خروج .

وجزاكم الله خير

#2

سلام عليكم

جرب الدوال فى <cctype>

شرح

#3

السلام عليكم

كيف حالك أخي الكريم

لجعل المستخدم ي دخل نص استخدم cin او أية طريقة أخرى تريد

طبعا تخزن القيمة في متغير char* لأحتمال ادخال حروف او ارقام

ثم عمل لوب يبدأ من 0 الي طول النص

والتأكد من كل char في النص اذا كان رقم او غير ذالك

لمعرفة طول السلسلة النصية أستخدم

strlen(VarName)

لمعرفة اذا كان ال char رقم عن طريق قيمة char code فهي بين او يساوي ال 48 و 57

0 --> 48
1 --> 49
........
9 --> 57

(char>=48 && char<=57)its number

والكل يوضع داخل لوب بسبب

اقتباس
3- يعطيني خياران في الأخير أولا ادخال مدخل آخر , ثانيا خروج .
لعمل ذلك اما اما ان تستخدم cin مثلا تتأكد من انه أدخل حرف ال y او n او أية طريقة أخرى

او تستطيع ايضا استخدام الدالة getch فهي تنتظر من المستخدم ان يضغط على لوحة المفاتيح ترجع رقم الkey الpressed

char c=getch()

ال ascii code لحرف y هو 89 للكبير و 121 للصغير الفرق بين الكود الكبير والصغير هو 32

تستطيع تحويل الحرف من الى كبير عن طريق انقاص 32 منه اذا كان صغير

c-=c & 32

ويكون شرط الخروج من اللوب هو c=89

مثلا تطبع جملة press any key to continue or Y to quit

اذا كان الcode المضغوط هو c=89 عندها سيخرج من اللوب

وتستطيع استخدام الميثود الموجودي في المكتبة <cctype> التي ذكرها الأخ الفاضل PointerVC

حاول واذا واجهتك مشاكل ضعها في المنتدى وان شاء الله راح تلاقي مساعدة

والله اعلم

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

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#4

اخي PointerVC شكرا لك ولكن للأسف لم أدرس بعد هذه المكتبة cctype

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

وجزاك الله خير

#5

أخي Mo7eb_Alrasool

أنا أستخدم برنامج c plus plus

وهذي صورة البرنامج v.6

c.jpg

وبصراحة لم أفهم شي الا الجزئية الألى من شرحك وهي int and char

وهذا الكود strlen(VarName) أول مرة اشوفه :s

وأيضا طريقة الكود char والأرقام 48 و57 فهي بالنسبة لي مثل الطلاسم مع اني فهمت منك ان الأرقام هي ارقام الحروف في لغة ascci ولكن لم أدرسها وليس عندي اي معلومات عنها وطريقة كتابة الكود بها :s

ولا أدري هل تقصد أنت برنامج آخر مثل برنامج الـ c تتعامل معها هذه الأكواد وليس c++ لأنهما يختلفان كثيرا على حسب علمي في طريقة كتابة الأكواد والبرمجة .

والله يااخوان جزاكم الله ألف خير بس الظاهر ان البرنامج صعب وكنت أفكر انه بسيط وسهل لكنه يحتاج الى مكتبات وكلاسات كثيرة ..

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

1- اذا كانت المدخلات حروف يطبعلي على الشاشة :

WRITTEN LETTERS

2- اذا كانت ارقام يطبعلي :

WRITTEN NUMBERS

3-اذا كانت المدخلات حروف وأرقام مع بعضهمايطبع التالي :

WRONG WRITTEN

يعني أنا مش فاهم كيف اخلي البرنامج يفهم ماهي نوع المدخلات وخاصة من نوع حروف وأرقام مع بعض .

بارك الله فيكم واتمنى المطلوب وضح ياغاليين .. وجزاكم الله خير على تعاونكم معي

#6

اهلا بك استاذي ,

بالنسبة للاستاذ Mo7eb_Alrasool اجاب على سؤالك اجابة وافية ,

وسأحاول اوضح لك بعض المفاهيم

اقتباس
أنا أستخدم برنامج c plus plus

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

خطوات حل المسألة :

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

واعتقد بأن الامر بسيط , حجز مصفوفة من نوع char وادخال السلسلة بواسطة الدالة cin . ولنفرض ان السلسة هي [char x[20

ثانيا : يجب ان تقوم بتحديد طول السلسة :

اما ان تستخدم الدالة strlen() وهي موجودة بالمكتبة string

او ان تستخدم طريقة اخرى اذا لم تأخذه هذه المكتبة ولم تتعامل معها , والطريقة هي :

نقوم بحجز ثلاثة متغيرات a,num,chr من نوع صحيح ونعطيهم جميعهم قيمة ابتدائية صفر.

	int a=0,num=0,chr=0;

ثم نقوم بعمل حلقة تكرار على ان يكون شرطها ان العنصر [x[a لا يساوي نهاية السلسلة , اي ان السلسة لم تنتهي .

	while(x[a]!='\0')

ثم نكتب داخل الحلقة كود الاختبار :

اذا كان العنصر[x[a اكبر او يساوي الرقم 48 والذي يعني الرقم 0 و اقل او يساوي 57 والذي يعني العدد 9 عندها قم بزيادة قيمة المتغير num

		if(x[a]>=48&&x[a]<=57)
			num++;

else

ماعدا ذلك قم بزيادة المتغير chr

		else
			chr++;

ثم نزيد قيمة العداد " المتغير a "

	a++;

والان كيف نحدد ما اذا كانت السلسة نصية او رقمية او كلاهما "مختلطه " ؟!

نقول ستستمر الحلقة الا ان تنتهي السلسة , وعندها المتغير a سيمثل عدد خانات السلسة .

فنقول اذا كان المتغير num يساوي المتغير a اي اذا كان كل عنصر من السلسلة النصية هو رقم :

اطبع رسالة "WRITTEN NUMBERS"

اما اذا كان a==chr اي ان كل خانة من السلسة عبارة عن " ليس رقم "

اطبعWRITTEN LETTERS

ماعدا ذلك : اي ان num لاتساوي a وchr لاتساوي a اي ان السلسة تحتوي على ارقام وحروف . اطبع

WRONG WRITTEN

if(a==num)
cout<<"WRITTEN NUMBERS\n";
else
if(a==chr)
cout<<"WRITTEN LETTERS \n";
else
cout<<"WRONG WRITTEN\n";

ربما تسأل لماذا قلنا من الخانة 48 والتي تعني 0 إلى الخانة 57 والتي تعني 9 ؟ اي لنفرض ان المتسخدم ادخل 10 ؟

عندها تذكر بان هذه سلسة حرفية اي سيكون العنصر الاول من السلسة 1 والعنصر الثاني 0 .

بالنسبة للشق الثاني من سؤالك فقد اجاب عليه الاستاذ الفاضل .

تقبل تحياتي . :)

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#7

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

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

أخي time1 سأعمل على شرحك لأنني فهمته وبإذن الله سأريكم النتيجة وان شاءالله تطلع ok

بارك الله فيكم وجزاكم الله ألف خير

تقديري واحترامي لكم

#8

آسف جدا على التأخر في ابداء النتيجة فجزاكم الله خيرا وكثر الله من أمثالكم

فعلا لقد استفدت كثيرا من هذا المنتدى وأتمنى له دوام الرقي ولأعضاءه دوام التوفيق والنجاح

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

تحياتي وتقديري للجميع

post-97507-1168733684_thumb.jpg

#9

اتمنى ان تواصل معنا في المنتدى ولاتكون مشاركاتك للاسئلة فقط . فهناك من يريد ان يتعلم منك

تقبل تحياتي

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#10

السلام عليكم

شكرا أخي time1 على التوضيح وبارك الله فيك

وكما قال الأستاذ time1

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

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

سلام

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#11

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

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

ولكن ماهو المطلوب الفعلي من البرنامج ؟؟؟

هل هو فقط الكشف عن نوع المتغير المدخل ؟؟؟

لو كان كذالك فأنا حالياً لا يمكنني أن أفيدك

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

مثلاُ

أدخل الرقم واحد للتعامل مع البيانات من نوع إنتجر

ادخل الرقم إثنان للتعامل مع البيانات من نوع كاركتر

ثم إستخدم جملة

SWITH CASE

أعتقد هذا قد يفي بالغرض حالياًَ

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

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

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

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

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

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