المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : هل فيه اضافة خاصة بالتحويل بين الوحدات ؟


عبد الهادي بهاب
30-11-2015, 12:22 AM
السلام عليكم

هل فيه اضافة خاصة بالتحويل بين الوحدات ؟

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

حتى يكفيني كثرة المعادلات

تحياتي

عبد الهادي بهاب
30-11-2015, 12:50 AM
محاولة سيناريو فيما يخص مثلا وحدة الغرام
بحيث احول السؤال مهما كان الى الغرام ...........و ايضا اجابة الستخدم ايضا الى الغرام ثم اقارن
اذا اخطا اعطيه الاجابة الصحيحة



v= String.ToNumber(Paragraph.GetText("Paragraph1"));-------الرقم المطلوب
uq = Label.GetText("uq");------------الوحدة الاساسبة
ur = Label.GetText("ur");----------الوحدة المطلوبة
r= String.ToNumber(Input.GetText("Input1"));----------اجابة المستخدم

lu={"kg","hg","dag","g","dg","cg","mm"};--------------الوحدات
cu={"1000","100","10","1","0.1","0.01","0.001"};--------قيمتها بالنسبة للغرام
local re=0
local wi=0

for i in pairs(lu) do
if uq == lu[i] then
wq = cu[i]
rep = v*cu[i]
end
end
wi= wq
re=rep

for p in pairs(cu) do
if ur == lu[p] then
if re == r*cu[p] then
Paragraph.SetText("Paragraph2", "صحيح ممتاز");
else
Paragraph.SetText("Paragraph2","للاسف اخطأت");
jst= v*( wi/cu[p])
Paragraph.SetText("Paragraph3",jst);
end
end
end

http://cdn.top4top.co/i_f4f7976f9e1.png

التطبيق
http://www.mediafire.com/download/q4vo761gttwquxr/quiz_grame.exe


الملف المفتوح
http://www.mediafire.com/download/y19dxvcpmd2yybo/conv_grame.apz

حاولت اختصار الكود لكن لن اوفق

ثامر أبو بلقيس
30-11-2015, 09:42 AM
فكرة جيدة ..... راجع أكوادك نموذج
http://store3.up-00.com/2015-11/1448867691411.bmp


موفق:abc_138:

عبد الهادي بهاب
30-11-2015, 12:48 PM
فكرة جيدة ..... راجع أكوادك نموذج
http://store3.up-00.com/2015-11/1448867691411.bmp


موفق:abc_138:

ادركت خطائي .......... اولا اعتمدت على الكثي من المتغيرات هناو هناك و تداخلت الدالة التكرارية الاولى مع الاخرى
ثانيا تسمية القيم تشابهت
لذلك غيرت الكود بالتالي

unit = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");

for i,n in pairs(unit) do
v1 = String.Find(n, ""..Label.GetText("uq"), 1, false);
if v1==1 then
rr=String.Mid(n,5,10)
end

v2 = String.Find(n, ""..Label.GetText("ur"), 1, false);
if v2==1 then
qq=String.Mid(n,5,10);
end
end

rep = String.ToNumber(Paragraph.GetText("Paragraph1"))*(rr/qq)

if rep== String.ToNumber(Input.GetText("Input1"))then
Paragraph.SetText("Paragraph2", "ÕÍíÍ ããÊÇÒ");
else
Paragraph.SetText("Paragraph2","ááÇÓÝ ÇÎØÃÊ");
Paragraph.SetText("Paragraph3",rep);
end




http://cdn.top4top.co/i_9f204b3c691.png

المشروع بعد التعديل

http://www.mediafire.com/download/4shiowb2cs8kd7v/conv_grame1.apz

عبد الهادي بهاب
30-11-2015, 12:51 PM
اقتراح لجعل البرنامج يتعامل مع كل الوحدات ( غرام . متر . لتر . حجوم. سعات ............الخ
ممكن وضع كل القيم في ملف txt ثم نشعل الكود السابق
مع بعض التغييرات طبعا

هل هذا ممكن

ثامر أبو بلقيس
01-12-2015, 12:35 PM
فكرة جيدة ..... راجع أكوادك نموذج
http://store3.up-00.com/2015-11/1448867691411.bmp


موفق:abc_138:

وهذه فكرة لانجاز برمجة للتحويلات
bidaya = 981 ---- الرقم المراد تحويله
x = "mg" ------ وحدة الرقم المراد تحويله
y ="g" ---- الوحدة التي نريد التحويل إليها
-----------------------------------------------------------
value1=0 ---- يتم هنا تخزين ترتيب الوحدة
value1=0 --- يتم هنا تخزين ترتيب الوحدة الثانية
---------------
my_table = {"mg", "cg", "dg", "g", "dag", "hg", "kg"}; ---- مصفوفة للوحدات
for n,p in pairs(my_table) do -- القيمتين واحدة لاسم الوحدة و ترتيبها بمعنى كل وحدة لها رقم من 1 الى7 هذه الأرقام سأستغلهاكخطوات
if p==x then ---- اذا تحقق تساوي بين اسم الوحدة و الوحدة المعلن عنها في بداية الكود
value1=n ---- تخزن ترتيب قلت ترتيب الوحدة وفق المصفوفة
end
if p==y then ---- و هنا اذا تساوى اسم الوحدة مع الوحدة المحول اليها
value2=n ----- يتم تخزين ترنتيب الوحدة الثانية
end
end ------ اذن قمنا بمعرفو ترتيب الوحدة الاولى و الثانية من خلال المصفوفة
if value1-value2 < 0 then --- بعد اجراء عملية الطرح بين الترتيبين الناتج له علاقة بالتحويل
Dialog.Message("Notice", bidaya/(10^Math.Abs((value1-value2))));
elseif value1-value2 >=1 then
Dialog.Message("Notice", bidaya*(10^Math.Abs((value1-value2))));
elseif value1-value2 ==0 then
Dialog.Message("Notice", bidaya);
end

ثامر أبو بلقيس
01-12-2015, 02:18 PM
الان بعد إنجاز التحويل لجدول الأوزان
نضيف لنفس الأكواد جدول الأطوال و جدول السعات لاحظ كيف تستغل فكرة بسيطة لتوفير الجهد و التعب
bidaya = 981 ---- الرقم المراد تحويله
x = "hl" ------ وحدة الرقم المراد تحويله
y ="l" ---- الوحدة التي نريد التحويل إليها
-----------------------------------------------------------
value1=0 ---- يتم هنا تخزين ترتيب الوحدة
value1=0 --- يتم هنا تخزين ترتيب الوحدة الثانية
---------------
my_table = {"mg", "cg", "dg", "g", "dag", "hg", "kg", "", "", "", "mm","cm", "dm", "m", "dam", "hm", "km", "", "", "","ml","cl", "dl", "l", "dal", "hl"}; ---- مصفوفة للوحدات
if String.Mid(x, String.Length(x), 1)==String.Mid(y, String.Length(y), 1) then

for n,p in pairs(my_table) do -- القيمتين واحدة لاسم الوحدة و ترتيبها بمعنى كل وحدة لها رقم من 1 الى7 هذه الأرقام سأستغلهاكخطوات
if p==x then ---- اذا تحقق تساوي بين اسم الوحدة و الوحدة المعلن عنها في بداية الكود
value1=n ---- تخزن ترتيب قلت ترتيب الوحدة وفق المصفوفة
end
if p==y then ---- و هنا اذا تساوى اسم الوحدة مع الوحدة المحول اليها
value2=n ----- يتم تخزين ترنتيب الوحدة الثانية
end
end ------ اذن قمنا بمعرفو ترتيب الوحدة الاولى و الثانية من خلال المصفوفة
if value1-value2 < 0 then --- بعد اجراء عملية الطرح بين الترتيبين الناتج له علاقة بالتحويل
Dialog.Message("Notice", bidaya/(10^Math.Abs((value1-value2))));
elseif value1-value2 >=1 then
Dialog.Message("Notice", bidaya*(10^Math.Abs((value1-value2))));
elseif value1-value2 ==0 then
Dialog.Message("Notice", bidaya);
end
else
Dialog.Message("Notice", "الوحدتان مختلفتان لا يمكن إجراء التحويل");
end


موفق :abc_138:

عبد الهادي بهاب
01-12-2015, 10:28 PM
وهذه فكرة لانجاز برمجة للتحويلات
bidaya = 981 ---- الرقم المراد تحويله
x = "mg" ------ وحدة الرقم المراد تحويله
y ="g" ---- الوحدة التي نريد التحويل إليها
-----------------------------------------------------------
value1=0 ---- يتم هنا تخزين ترتيب الوحدة
value1=0 --- يتم هنا تخزين ترتيب الوحدة الثانية
---------------
my_table = {"mg", "cg", "dg", "g", "dag", "hg", "kg"}; ---- مصفوفة للوحدات
for n,p in pairs(my_table) do -- القيمتين واحدة لاسم الوحدة و ترتيبها بمعنى كل وحدة لها رقم من 1 الى7 هذه الأرقام سأستغلهاكخطوات
if p==x then ---- اذا تحقق تساوي بين اسم الوحدة و الوحدة المعلن عنها في بداية الكود
value1=n ---- تخزن ترتيب قلت ترتيب الوحدة وفق المصفوفة
end
if p==y then ---- و هنا اذا تساوى اسم الوحدة مع الوحدة المحول اليها
value2=n ----- يتم تخزين ترنتيب الوحدة الثانية
end
end ------ اذن قمنا بمعرفو ترتيب الوحدة الاولى و الثانية من خلال المصفوفة
if value1-value2 < 0 then --- بعد اجراء عملية الطرح بين الترتيبين الناتج له علاقة بالتحويل
Dialog.Message("Notice", bidaya/(10^Math.Abs((value1-value2))));
elseif value1-value2 >=1 then
Dialog.Message("Notice", bidaya*(10^Math.Abs((value1-value2))));
elseif value1-value2 ==0 then
Dialog.Message("Notice", bidaya);
end


الان بعد إنجاز التحويل لجدول الأوزان
نضيف لنفس الأكواد جدول الأطوال و جدول السعات لاحظ كيف تستغل فكرة بسيطة لتوفير الجهد و التعب
bidaya = 981 ---- الرقم المراد تحويله
x = "hl" ------ وحدة الرقم المراد تحويله
y ="l" ---- الوحدة التي نريد التحويل إليها
-----------------------------------------------------------
value1=0 ---- يتم هنا تخزين ترتيب الوحدة
value1=0 --- يتم هنا تخزين ترتيب الوحدة الثانية
---------------
my_table = {"mg", "cg", "dg", "g", "dag", "hg", "kg", "", "", "", "mm","cm", "dm", "m", "dam", "hm", "km", "", "", "","ml","cl", "dl", "l", "dal", "hl"}; ---- مصفوفة للوحدات
if String.Mid(x, String.Length(x), 1)==String.Mid(y, String.Length(y), 1) then

for n,p in pairs(my_table) do -- القيمتين واحدة لاسم الوحدة و ترتيبها بمعنى كل وحدة لها رقم من 1 الى7 هذه الأرقام سأستغلهاكخطوات
if p==x then ---- اذا تحقق تساوي بين اسم الوحدة و الوحدة المعلن عنها في بداية الكود
value1=n ---- تخزن ترتيب قلت ترتيب الوحدة وفق المصفوفة
end
if p==y then ---- و هنا اذا تساوى اسم الوحدة مع الوحدة المحول اليها
value2=n ----- يتم تخزين ترنتيب الوحدة الثانية
end
end ------ اذن قمنا بمعرفو ترتيب الوحدة الاولى و الثانية من خلال المصفوفة
if value1-value2 < 0 then --- بعد اجراء عملية الطرح بين الترتيبين الناتج له علاقة بالتحويل
Dialog.Message("Notice", bidaya/(10^Math.Abs((value1-value2))));
elseif value1-value2 >=1 then
Dialog.Message("Notice", bidaya*(10^Math.Abs((value1-value2))));
elseif value1-value2 ==0 then
Dialog.Message("Notice", bidaya);
end
else
Dialog.Message("Notice", "الوحدتان مختلفتان لا يمكن إجراء التحويل");
end


موفق :abc_138:


روعة جدا . و اختصار فعلا لكل ذلك ............ ساحاول استغلال الكود في تمرين موجه لتلاميذ الابتدائي للمراجعة التفاعلية
شكرا جزيلا جزيلا :abc_152::abc_152:

ثامر أبو بلقيس
03-12-2015, 03:14 PM
سيتم نهذيب الكود أكثر