مشاهدة النسخة كاملة : تمرين رياضي ... دائما مع الاحتمالات
عبد الهادي بهاب
02-10-2017, 09:06 PM
السلام عليكم ورحمة الله وبركاته
اعجبتني لعبة الارقام
في برنامج اجنبي فرنسي حروف و ارقام
يعطي للمتسابق مجموعة ارقام و ناتج
يطلب من المتسابق
باستعمال الارقام مرة واحدة فقط
مع ما يريد من العمليات
بحيث يجد الناتج
ممكن مر معنا مثل هذا التمرين مثل هذا من قبل ...لكن لا باس بالتذكير
-------------------
التمرين :
- نستخرج في ديالوج 20 عملية حسابية
لخمسة اعداد معينة و يكون حاصل العمليات بينها عدد بين 300 و 600
وغيرعشري
- الاعداد الثلاثة الأولى تكون اصغر من 10
- العدد الرابع يكون بين 10 و 50
- العدد الخامس بين 50 و 100
-----------------------
محاول معكم ..........وجدت حل لكنه طويل في الاجراء
http://www.imgserv.com/images/2017/10/02/4MVOat0zCo.png
ننتظر افكاركم
ثامر أبو بلقيس
03-10-2017, 12:54 AM
السلام عليكم ورحمة الله وبركاته
لا أدري هل تقصد بعدم التكرار للأعداد
في العمليات أم في المجاميع أم في كليهما
حتى يتسنى لمن أراد المحاولة المشاركة سأكتفي بالمتابعة :abc_138:
عبد الهادي بهاب
03-10-2017, 01:33 AM
السلام عليكم ورحمة الله وبركاته
لا أدري هل تقصد بعدم التكرار للأعداد
في العمليات أم في المجاميع أم في كليهما
حتى يتسنى لمن أراد المحاولة المشاركة سأكتفي بالمتابعة :abc_138:
اي لا نستخدم الرقم مرتين في الحساب بل مرة واحدة
ممكن الرقم مكرر في الخمسة ارقام ........اي العملية فيها 5 ارقام بعمليات بينها تحقق الشرط
سنترجم الكود الى لعبة تكون موضوع ملف مفتوح
عبد الهادي بهاب
03-10-2017, 03:47 AM
لاحظوا هذا التمرين
وهو المطلوب تصميمه
width=400
height=350
او الرباط من هنا
http://smart-kit.com/games/operation_math_equation_game/Operation.swf
بيمين الماووس ثم احفظ باسم
عبد الهادي بهاب
03-10-2017, 03:51 AM
يعني التمرين المطروح في الموضوع من اجل تحصيل مجموعة احتمالات لعرضها في اللعبة الرياضية
وجدت توليفة او حل مؤقت اخرجت به هذا التمرين
https://www.mediafire.com/file/d1vn4h64404dxle/Math.exe
ما رأيكم ؟
هل فيه افكار او اقتراحات
ثامر أبو بلقيس
03-10-2017, 09:46 AM
جيد سأستغل loadstring
حتى واني لم افهم جيدا إلا إن كان قصدك
إجراء عمليات أربع عشوائية بدون أقواس و هذه الأرقام يمنع فيها التكرار
وكذلك المجاميع لا يقبل تكرارها سأكتب لك من الان بعد 10 دقائق الحل الأمثل رياضيا
ثامر أبو بلقيس
03-10-2017, 10:05 AM
ستلاحظ أنه لا يمكن تكرار رقم لا في العمليات و لا حتى المجاميع
كما يمكنك رفع قيمة 20 عملية إلى عاملية الاحتمالات
function test (tap,a,i)
for k = 1,i do
if a == tap[k] then
return true
end;end
return false
end
op_table = {"/","+","-",'*'};
nb_table = {0,0,0,0,0};
h='';tamer={}
for i = 1,20 do
repeat
for j=1,3 do
v =Math.Random(1, 9);
while (test(nb_table,v,3)==true) do
v = Math.Random(1,9);
end
Table.Insert(nb_table, j, v);
end
v =Math.Random(10, 49);Table.Insert(nb_table, 4, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 5, v);
v =Math.Random(1, 4);n1=op_table[v]
v =Math.Random(1, 4);n2=op_table[v]
v =Math.Random(1, 4);n3=op_table[v]
v =Math.Random(1, 4);n4=op_table[v]
g = loadstring(string.format("return %s",nb_table[1]..n1..nb_table[2]..n2..nb_table[3]..n3..nb_table[4]..n4..nb_table[5]))();
g = Math.Floor(String.ToNumber(g))
until String.ToNumber(g)>=300 and String.ToNumber(g)<= 600 and test (tamer,g,i)==false ;
Table.Insert(tamer, i, g);
h =''..nb_table[1]..''..n1..''..nb_table[2]..''..n2..''..nb_table[3]..''..n3..''..nb_table[4]..''..n4..''..nb_table[5]..'='..g
Debug.ShowWindow(true);
Debug.Print(h.."\r\n");
end
بالتوفيق
عبد الهادي بهاب
03-10-2017, 08:13 PM
ستلاحظ أنه لا يمكن تكرار رقم لا في العمليات و لا حتى المجاميع
كما يمكنك رفع قيمة 20 عملية إلى عاملية الاحتمالات
function test (tap,a,i)
for k = 1,i do
if a == tap[k] then
return true
end;end
return false
end
op_table = {"/","+","-",'*'};
nb_table = {0,0,0,0,0};
h='';tamer={}
for i = 1,20 do
repeat
for j=1,3 do
v =Math.Random(1, 9);
while (test(nb_table,v,3)==true) do
v = Math.Random(1,9);
end
Table.Insert(nb_table, j, v);
end
v =Math.Random(10, 49);Table.Insert(nb_table, 4, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 5, v);
v =Math.Random(1, 4);n1=op_table[v]
v =Math.Random(1, 4);n2=op_table[v]
v =Math.Random(1, 4);n3=op_table[v]
v =Math.Random(1, 4);n4=op_table[v]
g = loadstring(string.format("return %s",nb_table[1]..n1..nb_table[2]..n2..nb_table[3]..n3..nb_table[4]..n4..nb_table[5]))();
g = Math.Floor(String.ToNumber(g))
until String.ToNumber(g)>=300 and String.ToNumber(g)<= 600 and test (tamer,g,i)==false ;
Table.Insert(tamer, i, g);
h =''..nb_table[1]..''..n1..''..nb_table[2]..''..n2..''..nb_table[3]..''..n3..''..nb_table[4]..''..n4..''..nb_table[5]..'='..g
Debug.ShowWindow(true);
Debug.Print(h.."\r\n");
end
بالتوفيق
:abc_022::abc_022::abc_022:
جميل جدا .............
يعني اذا ارنا عمليات اكثر ما علينا سوى تغيير 20 الى العدد الذي نريده
ما شاء الله
عبد الهادي بهاب
03-10-2017, 08:16 PM
حسب ما فهمت ..ان الدالة التي استعملتها في الاول tap
هي لالغاء تكرار الارقام صح ؟
.........
ثامر أبو بلقيس
03-10-2017, 08:20 PM
حسب ما فهمت ..ان الدالة التي استعملتها في الاول tap
هي لالغاء تكرار الارقام صح ؟
.........
نعــــم الدالة التي كتبتها لهذا الغرض :abc_139:
عبد الهادي بهاب
03-10-2017, 08:29 PM
محاولتي --- مع توليد عشوائيا الارقام و امانية تكرارها ------
igli = ""; oper={"+","-","*","/"}; z=1;
for i=1,20 do
repeat
s1 = Math.Random(1,10); s2 = Math.Random(1,10);s3 = Math.Random(1,10);
s4 = Math.Random(11,30);s5 = Math.Random(50,100);
x = s1..oper[Math.Random(1,4)]..s2..oper[Math.Random(1,4)]..s3..oper[Math.Random(1,4)]..s4..oper[Math.Random(1,4)]..s5;
x1 = string.gsub("$return "..x.."$", "%$(.-)%$", function (s) return loadstring(s)() end)
x1 = tonumber(x1);
if x1 > 300 and x1 < 600 and Math.Floor(x1) == x1 then
z=z+1;
igli = igli..x.."="..x1.."\r\n";
end
until z >= 20;
end
Dialog.Message("Elhadi",igli);
عبد الهادي بهاب
03-10-2017, 08:36 PM
نعــــم الدالة التي كتبتها لهذا الغرض :abc_139:
شكرا على الكود الذي تفضلتم بكتابته ...
بعد اذنكم اذا اردنا ان نتركها سبهللا اي بدون شرط لتكرار الارقام في المعادلة يصبح الكود هكذا :
op_table = {"/","+","-",'*'};
nb_table = {0,0,0,0,0};
h='';tamer={}
for i = 1,20 do
repeat
v =Math.Random(10, 49);Table.Insert(nb_table, 1, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 2, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 3, v);
v =Math.Random(10, 49);Table.Insert(nb_table, 4, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 5, v);
v =Math.Random(1, 4);n1=op_table[v]
v =Math.Random(1, 4);n2=op_table[v]
v =Math.Random(1, 4);n3=op_table[v]
v =Math.Random(1, 4);n4=op_table[v]
g = loadstring(string.format("return %s",nb_table[1]..n1..nb_table[2]..n2..nb_table[3]..n3..nb_table[4]..n4..nb_table[5]))();
g = Math.Floor(String.ToNumber(g))
until String.ToNumber(g)>=300 and String.ToNumber(g)<= 600 ;
Table.Insert(tamer, i, g);
h =''..nb_table[1]..''..n1..''..nb_table[2]..''..n2..''..nb_table[3]..''..n3..''..nb_table[4]..''..n4..''..nb_table[5]..'='..g
Debug.ShowWindow(true);
Debug.Print(h.."\r\n");
end
شكرا جزيلا
ثامر أبو بلقيس
03-10-2017, 08:48 PM
شكرا على الكود الذي تفضلتم بكتابته ...
بعد اذنكم اذا اردنا ان نتركها سبهللا اي بدون شرط لتكرار الارقام في المعادلة يصبح الكود هكذا :
op_table = {"/","+","-",'*'};
nb_table = {0,0,0,0,0};
h='';tamer={}
for i = 1,20 do
repeat
v =Math.Random(10, 49);Table.Insert(nb_table, 1, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 2, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 3, v);
v =Math.Random(10, 49);Table.Insert(nb_table, 4, v);
v = Math.Random(50, 100);Table.Insert(nb_table, 5, v);
v =Math.Random(1, 4);n1=op_table[v]
v =Math.Random(1, 4);n2=op_table[v]
v =Math.Random(1, 4);n3=op_table[v]
v =Math.Random(1, 4);n4=op_table[v]
g = loadstring(string.format("return %s",nb_table[1]..n1..nb_table[2]..n2..nb_table[3]..n3..nb_table[4]..n4..nb_table[5]))();
g = Math.Floor(String.ToNumber(g))
until String.ToNumber(g)>=300 and String.ToNumber(g)<= 600 ;
Table.Insert(tamer, i, g);
h =''..nb_table[1]..''..n1..''..nb_table[2]..''..n2..''..nb_table[3]..''..n3..''..nb_table[4]..''..n4..''..nb_table[5]..'='..g
Debug.ShowWindow(true);
Debug.Print(h.."\r\n");
end
شكرا جزيلا
في هكذا حالات يمكنك كذلك حذف المتغير tamer و ما تعلق به أليس كذلك ؟
عبد الهادي بهاب
03-10-2017, 09:56 PM
في هكذا حالات يمكنك كذلك حذف المتغير tamer و ما تعلق به أليس كذلك ؟
صحيح استاذ ...:abc_152::abc_152:
vBulletin® v3.8.11, Copyright ©2000-2024, abohmam