تمام فكرة حلوا فعلا انا كنت محتاج حاجة زي كدة بس هو ممكن سؤال تاني ..
دلوقتي انا بحاول اعمل الة حاسبة المشكلة اني لازم احدد حجم المصفوفة قد اية في حين لو انا عاوز اسبها مفتوحة ومثلا يقا اكبر عدد يكون مثلا مكون من 8 خانات اعمل حاجة زي كدة ازاي وازاي افهمة ان بعد (/*+-)دة رقم جديد ويعمل علية العملية الجديدة ؟؟
عموما الف شكر بشمهندس
|
سلام عليكم
أخي كريم
فكرتلك بكود يحل مشكلة من خلال هذا كود يمكنك حصول على أي رقم يبقى انت كيف تستفيد منه المهم في موضوع الفكرة الكود
كود:
if(num>=0 && num <=9)
{
if(num==0)k1=0;
else
{
k1=1;
}
if(start_operation==0 && k1==1)start_operation=1;
if( start_operation >=1)
{
start_operation ++;
if( start_operation ==2) number=num;
else
{
number=number *10+num;
}
}
}
شرح الكود
انت راح تستخدم كيباده في كيباده يوجد ارقام من 0 الى 9 وباقي اخر ليست أرقام
أفترض اني قرات من كيباده
هذا جزء من كود كيبادة
كود:
while( kp is 0)kp=Keypad_Key_Click();
if( kp is 1 ) num=7;
else if( kp is 2 ) num=4;
else if( kp is 3 ) num=1;
else if( kp is 5 ) num=8;
else if( kp is 6 ) num=5;
else if( kp is 7 ) num=2;
else if( kp is 8 ) num=0;
else if( kp is 9 ) num=9;
else if( kp is 10 ) num=6;
else if( kp is 11 ) num=3;
هنا يتم خزن الارقام من 0 الى 9 في متغير num
الان عندنا مشكلة عند كتابة الرقم وهو عندما يتم كتابة رقم الاول 0 يجب أهمال هذا الرقم لذا قمت بكتابة هذا الكود
كود:
if(num==0)k1=0;
else
{
k1=1;
}
فأذا كان num=0 جعلت متغير k1=0 واذا لايساوي 0 جعلته =1
عندها سوف يحقق لي شرط أخر
كود:
if(start_operation==0 && k1==1)start_operation=1;
start_operation بالبدايه=0 يعني لاتوجد هناك أي عملية لكتابة الرقم
ولكن ماذا أعني بهذا الشرط
اذا كان رقم الاول=0 فأن k1=0 ولن يتحقق وسوف يهمل هذا رقم ام اذا لم يكن =0 عندها أصبح k1=1 وبما أنا start_operation=0 فعندها يصبحstart_operation=1
وعندها يدخل في هذا الشرط وهو بداية العملية كتابة الرقم
كود:
if( start_operation >=1)
{
start_operation ++;
if( start_operation ==2) number=num;
else
{
number=number *10+num;
}
}
هنا بتاكيد عند دخولنا الى هذا الشرط الرقم اي num لايساوي 0 ولكن هنا عندنا مشكلة بسيطة وهي انا بحاجه الى رقم بداية اي منه ابدأ اكتب رقم بمعنى اخر
يعني رقم أحاد
فقمت بحل هذه مشكله بأن اكتب هذا الكود
في الاول بداية كتابة رقم start_operation =1 وعندما أجمع علية بواحد يصبحstart_operation =2 عندها يدخل في هذا الشرط
كود:
if( start_operation ==2) number=num;
وهو يدخل الى هذا شرط مره واحدة فقط اي انني حليت مشكلة رقم الاول
والان نحصل على بقية الارقام بسهوله جدا بهذه المعادلة
كود:
number=number *10+num;
أخي كريم خلي في بالك عندما تضغط على اي مفتاح ليس رقم فأنها تعتبر نهاية العملية واذا كتبت رقم أخر فانه يبدأ من جديد
لذا عليك خزن ماحصلته من رقم في متغير اخر لانك سوف تجعل
start_operation =0 و k1=0 تمهيدا لكتابه رقم أخر