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

السماح للمستخدم فقط بإدخال محارف محددة

مغلق
بدأه black lord في 25 مايو 2007 · 6 رد · 688 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا اقوم بكتابة برنامج يعمل بعض العمليات الحسابية البسيطة بلغة السي

كيف يمكنني منع المستخدم من إدخال المحارف أي فقط يسمح له بإدخال الارقام من 0 ل9 ورموز العمليات الحسابية (+,-,*,/)

بحيث إذا أدخل غير هذه المحارف يظهر تنبيه أو خطأ يدل على أن المستخدم أدخل رمز خاطئ

كانت لدي فكرة بأن أقوم بتحويل المحرف الذي يدخله المستخدم إلى رقمه في جدول الASCII وباستخدام الشرط IF

احدد ارقام المحارف المسموح بادخالها مثلا اسمح فقط بإدخال المحارف ذات الارقام من 48 حتى 57

اي من 0 وحتى 9


char c;

c=getch();
x=c;
cout << x << endl;
if (x>47&&x<58)

printf("True");

else
printf("False");
int x;

#2
اقتباس

ريقة لا تعمل إلا على رقم مؤلف من خانة واح

[/quote

]

استعمل div وmod

كل مره تاخذ الباقي وتقطع هذا الباقي من سلسله الارقام .. حتى يصبح الرقم صفر.. (يعني يمكن مع لووب while من اجل الفحص السريع عن طريقها .. )

وبهذه الطريقه تفحص رقم رقم ..

كل ما عليك هو ادخال الخطوه داخل برنامجك وادخال خطوات دقه البرنامج ... اللي ذكرتها في اول الموضوع..

تحياتي

#3

شكرا أخي aptx على الرد السريع

بصراحة انا مافهمت فكرتك تماما,, لكن خطر على بالي من كلامك:

ناخد القيمة المدخلة وناخد ناتج باقي قسمة الرقم المدخل على 2 مثلا والناتج على حد علمي لن يكون مؤلف من اكثر من خانة واحدة

وناخد هذا الناتج ونحوله إلى رقمه في جدول الASCII ونستخدم نفس الشرط ان يكون بين 47 و 58

لا اعرف اذا كانت هذه هي فكرتك تماما....

ولكن لأحل المشكلة انا بحاجة إلى التابع الذي يقوم بعكس عمل التابع

cout << x << endl;

#4

ما شاء الله عليك يا blacklord هذه فعلا هى الفكرة المظبوطة, و لغة السى وفرت عليك و عملت دالة إسمها isdigit() بترجع قيمة غير صفرية لو مدخلها رقم بين 0 و 9 و بترجع صفر فى أى حالة أخرى.

طيب دلوقتى إنت عايز تقبل أرقام من المستخدم إلى أن يضغط Enter مثلا, يبقى حتدخل فى Loop و تاخد حرف حرف من المستخدم و ساعتها حيبقى عندك 3 حالات للحرف المدخل:

1- Enter

2- رقم (0 - 9)

3- حرف

سوف أترك لك التفكير فيما ستفعله فى هذه الحالات الثلاث :) لأنى متأكد إنك حتوصل للحل الصحيح إن شاء الله.

#5

شكرا أخي Blueteeth

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

سؤال: هل هناك امر يسمح بقراءة القيمة المدخلة من قبل المستخدم من دون ان يضغط enter يعني مثلا اعمل loop

ولنفرض الرقم المدخل مؤلف من خانتين

اول شيء تقرأ الحلقة الخانة الاولى وبعدين تنفذ الامر الذي يمكن من القراءة من دون ضغط enter (فرضا ان هناك هكذا أمر)

وبعدين ترجع الloop لتدخل الخانة التانية وتتوقف عندما يضغط المستخدم enter

وبهذه الطريقة يتم إدخال كل خانة لوحدها

#6

هذا الموضوع يمكن أن يفيدك ..

/index.php?showtopic=127786

#7
اقتباس
سؤال: هل هناك امر يسمح بقراءة القيمة المدخلة من قبل المستخدم من دون ان يضغط enter يعني مثلا اعمل loop

ولنفرض الرقم المدخل مؤلف من خانتين

أيوة هو الأمر اللى إنت مستخدمه getch() بياخد الحرف من الكيبورد يديهولك فى البرنامج قبل ما يطلع على الشاشة.

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

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

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