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

سؤال حول التحقق (المتقدم) من صحة الإدخال

بدأه khaled_prg في 8 مايو 2010 · 6 رد · 516 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اريد مساعدتكم في التمرين التالي:

اكتب برنامج بلغة c يطلب من المستخدم إدخال عدد من سبعة أرقام ثم يقوم بفحص كل رقم عند إدخاله, فإذا أدخل المستخدم حرفا أو رمزا فسيطلق البرنامج الصفارة باستعمال \a أما إذا أدخل المستخدم رقما فسيقوم البرنامج بإظهاره.

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

قمت بحل الجزء الأول من البرنامج و أريد مساعدتكم في الجزء الثاني :blush:

حل الجزء الأول:

#include<stdio.h>
#include<conio.h>
int main()
{
    char nombre_entier[7];
    int i;
    printf("entrez un nombre:");
    for(i=0;i<7;i++)
    {
       for(;;)
       {
          nombre_entier=getch();
          if(nombre_entier>='0' && nombre_entier<='9')
           {putchar(nombre_entier);break;}
          else printf("\a");
       }
    }
    nombre_entier[7]='\0';
    printf("\nvotre nombre est:%s \n",nombre_entier); 
    printf("tapez une touche pous quittert le programme\n");
    getch();
 return 0;
}

تحياتي.

#2

السلام عليكم :

الكود التالي للخروج منه أكتب $

#include <stdio.h>
#include<conio.h>


int main(int argc, char *argv[])
{
char c;	
do{
c=getch();
if(c>='0'&&c<='9')
printf("%c",c);
else
printf("\a"); 	
}while(c!='$') ;

 return 0;
}
1
tvquran_6.gif

#3
اقتباس

الكود التالي للخروج منه أكتب $

#include <stdio.h>
#include<conio.h>
int main(int argc, char *argv[])
{
char c;
 do{c=getch();if(c>='0'&&c<='9')
printf("%c",c);
else printf("\a");
}while(c!='$') ;
 return 0;
}

أشكرك اخي الكريم على المساعدة :) و لكنني لا أريد أن يضغط المستخدم على الرمز $ للدلالة علة نهاية الإدخال بل أريده أن يضغط على آنتر فقط.

هناك أمر آخر:

يجب حفظ العدد المُدخل, وهذه كارثة بالنسبة لي ! فبحسب فكرتي .. سيتم تخزين أرقام العدد في مصفوفة أحادية و إذا كنا لا نعلم عدد خانات المصفوفة فلا يمكننا استعمال هذه الفكرة !!!

أرجوا المساعدة و شكرا مقدما.

#4
اقتباس
أشكرك اخي الكريم على المساعدة :) و لكنني لا أريد أن يضغط المستخدم على الرمز $ للدلالة علة نهاية الإدخال بل أريده أن يضغط على آنتر فقط.

جرب :

while (!EOF)
{
scanf();
}
1 −1
#5

أستخدم متغير عددي وضع فيه الارقام:

#include <stdio.h>
#include<conio.h>


int main(int argc, char *argv[])
{
char c;	
int n=0;
do{
c=getch();
if(c>='0'&&c<='9'){
printf("%c",c);
n+=(int)(c-'0');
n*=10;
}
else
printf("\a"); 	
}while(c!=13) ;n/=10;
printf("\n%d\n",n);
getchar();
 return 0;
}
2
tvquran_6.gif

#6
اقتباس
جرب :

while (!EOF)
{
scanf();
}

أشكرك على المساعدة :) ولكن الطريقة لم تنجح معي :blush: هل أنت متأكد من أنها تعمل !؟

اقتباس
أستخدم متغير عددي وضع فيه الارقام:

#include <stdio.h>
#include<conio.h>


int main(int argc, char *argv[])
{
char c; 
int n=0;
do{
c=getch();
if(c>='0'&&c<='9'){
printf("%c",c);
n+=(int)(c-'0');
n*=10;
}
else
printf("\a");   
}while(c!=13) ;n/=10;
printf("\n%d\n",n);
getchar();
 return 0;
}

ما شاء اله عليك يا مشرفنا الغالي :wub: طريقة جميلة جدا جدا .. مع أنني لم أفهمها بشكل كامل و لكنني طبقتها و اشتغلت 100% , ياليت توضح الطريقة.

وشكرا مقدما.

#7

الفكرة الاساسية : تحويل كل حرف رقمي مدخل الي رقم ثم إضافتة الي متغير رقمي.

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

النقاط التي تصل اليها بجهد ترسخ في ذهنك أكثر.

tvquran_6.gif

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

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

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

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

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