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

مشاهدة النسخة كاملة : المساعدة في انشاء جدول حصص الكتروني ؟


ياسرهتهت
04-05-2016, 01:30 PM
بسم الله الرحمن الرحيم
أخواني الاعزاء اساتذتي الكرام

هل من الممكن انشاء جدول للحصص الكتروني ......؟

http://a.top4top.net/p_124i8z11.png

علي اساس ان عدد الحصص في الاسبوع 30 حصة
موزعة على 6 ايام هي ايام الاسبوع

ومطلوب عدد معين الحصص لكل مادة

مثلا مثل هذا الجدول

http://c.top4top.net/p_124rv5y1.jpg

----------
لو وضعنا ComboBox يمثل هذا الجدول
بحيث يكون اسم المادة في ItemText
وعدد الساعات المحدد في ItemData

الســــــــــــــــــــــ ــــؤال ؟؟؟؟؟؟؟
ما هو الكود او الفكرة التي تمكني من توزيع هذا الجدول
على 30 ساعة الممثلة في 30 Input
مقسمة الي 5 مجموعات كل مجموعة تمثل يوم
وكل مجموعة 6 عناصر هي عدد الحصص في اليوم

لا ادري هل استطعت توصيل الفكرة :abc_102:

هذا ملف مفتوح للفكرة


http://up.top4top.net/downloadf-124pm7b1-rar.html

موفقين بإذن الله ... لكم مني أجمل تحية .

عبد الهادي بهاب
04-05-2016, 05:15 PM
انت تقصد الاحتمالات الممكنة لشرط عذذ الحصص في اليوم
كود يححق الشرط و يضع كل مادة في خانة

هل هذا هو المقصود ؟

ثامر أبو بلقيس
04-05-2016, 06:53 PM
اضبط هذا الجدول عدد الحصص في الجدول إلى 30 حصة
http://c.top4top.net/p_124rv5y1.jpg

عدد الحصص غير مضبوط بعدها
عدل على أنبوتات الحصص من حيث التسمية خليها مرتبة من Input1 إلى غاية Input30

--------------- بعد توضيح عدد الحصص أي انقاص الحصة الزائدة وهذا ضروري
جيد لو ترفع ملفا مقتوحا به فقط الانبوتات معدلة و ComboBox1 مكتوب فيها هذا التعديل أي الجدول المعدل
و سنحاول :abc_138:

ثامر أبو بلقيس
04-05-2016, 07:08 PM
الحل :
------------------------------------------------------------------
my_table = {};

for g = 1,ComboBox.GetCount("ComboBox1")do
for y = 1,ComboBox.GetItemData("ComboBox1", g) do
Table.Insert(my_table, y, ComboBox.GetItemText("ComboBox1", g));
end
end
if Table.Count(my_table) <= 30 then
----------------------------------------------------------------
vv=Table.Count(my_table);k = {};k[1]= Math.Random(1, vv);n=1----
while Table.Count(k)~= Table.Count(my_table) do-----------------
t=Math.Random(1, vv);for i = 1,Table.Count(k) do---------------
if t==k[i] then------------------------------------------------
n=2;end;end----------------------------------------------------
if n == 1 then-------------------------------------------------
k[Table.Count(k)+1]=t;else-------------------------------------
n=1;end;end;---------------------------------------------------
tamer={}-------------------------------------------------------
for i =1,Table.Count(my_table) do-------------------------------
Table.Insert(tamer, i, k[i]);----------------------------------
end------------------------------------------------------------
for n , p in pairs (tamer) do
Input.SetText("Input"..n, my_table[p]);
end
---------------------------------------------------------------
else
Dialog.Message("انتبه", " لديك حصص زائدة تقدر بـ "..(Table.Count(my_table)-30).." حصة ");
end

أكتبه مثلا في زر وعند كل ضغطة تحصل على توزيع مغاير للمواد حسب الحصص و النصاب الساعي
موفق :abc_065:

عبد الهادي بهاب
04-05-2016, 10:30 PM
السلام عليكم ورحمة الله وبركاته

متابع معكم .......الفكرة ........نسجل في مصفوفة المواد مكررة بعدد حصصها في الاسبوع اي عربي 6 مرات و اسلامية مرة واحدة ............الخ
نجعل دالة عشوائية تستدعي قيمة من المصفوفة و تضعها في انبوت ثم تحذفه من المصفوفة كي لا يتكرر
هي هي لمبدأ نفسه في كود الاخ ثامر

نضع 8 ليبلات من 1 الى 8 هي اسماء المواد ......
نضع اسفل منها 8 انبوتات فارغة نسميها nput بدون I من 1 الى 8
نضع 30 انبوت موزعة 5 5 5 5 5 5 كما في الصورة اعلاه


لاحظ الكود التالي :


moide = {};
for i=1,8 do
for p = 1, String.ToNumber(Input.GetText("nput"..i)) do
Table.Insert(moide, p, Label.GetText("Label"..i));
end
end

--------------------------------
for i=1,30 do
choi = Math.Random(1,#moide);
Input.SetText("Input"..i, moide[choi]);
Table.Remove(moide,choi);
end




الملف المفتوح

http://gulf-up.com/do.php?id=90945

تحياتي

ياسرهتهت
04-05-2016, 10:57 PM
الحل :
------------------------------------------------------------------
my_table = {};

for g = 1,ComboBox.GetCount("ComboBox1")do
for y = 1,ComboBox.GetItemData("ComboBox1", g) do
Table.Insert(my_table, y, ComboBox.GetItemText("ComboBox1", g));
end
end
if Table.Count(my_table) <= 30 then
----------------------------------------------------------------
vv=Table.Count(my_table);k = {};k[1]= Math.Random(1, vv);n=1----
while Table.Count(k)~= Table.Count(my_table) do-----------------
t=Math.Random(1, vv);for i = 1,Table.Count(k) do---------------
if t==k[i] then------------------------------------------------
n=2;end;end----------------------------------------------------
if n == 1 then-------------------------------------------------
k[Table.Count(k)+1]=t;else-------------------------------------
n=1;end;end;---------------------------------------------------
tamer={}-------------------------------------------------------
for i =1,Table.Count(my_table) do-------------------------------
Table.Insert(tamer, i, k[i]);----------------------------------
end------------------------------------------------------------
for n , p in pairs (tamer) do
Input.SetText("Input"..n, my_table[p]);
end
---------------------------------------------------------------
else
Dialog.Message("انتبه", " لديك حصص زائدة تقدر بـ "..(Table.Count(my_table)-30).." حصة ");
end

أكتبه مثلا في زر وعند كل ضغطة تحصل على توزيع مغاير للمواد حسب الحصص و النصاب الساعي
موفق :abc_065:

------------------------------------------------------

بسم الله الرحمن الرحيم

شكرا لك استاذي الكريم
تم التطبيق بنجاح
هذا الملف بعد تعديل اسماء الانبت

http://up.top4top.net/downloadf-124boko1-rar.html

عندي استفسار كيف استطيع تفادي تكرار اسم المادة مرتين في اليوم الواحد؟
الا اذا كان عدد الساعات المخصصه لها اكثر 6 في الاسبوع

كما تلاحط في الصوره

http://d.top4top.net/p_124ruy71.png

موفق بإذن الله ... لك مني أجمل تحية .
:abc_138::abc_138::abc_138:

ياسرهتهت
04-05-2016, 11:01 PM
انت تقصد الاحتمالات الممكنة لشرط عذذ الحصص في اليوم
كود يححق الشرط و يضع كل مادة في خانة

هل هذا هو المقصود ؟

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

ياسرهتهت
04-05-2016, 11:11 PM
السلام عليكم ورحمة الله وبركاته

متابع معكم .......الفكرة ........نسجل في مصفوفة المواد مكررة بعدد حصصها في الاسبوع اي عربي 6 مرات و اسلامية مرة واحدة ............الخ
نجعل دالة عشوائية تستدعي قيمة من المصفوفة و تضعها في انبوت ثم تحذفه من المصفوفة كي لا يتكرر
هي هي لمبدأ نفسه في كود الاخ ثامر

نضع 8 ليبلات من 1 الى 8 هي اسماء المواد ......
نضع اسفل منها 8 انبوتات فارغة نسميها nput بدون I من 1 الى 8
نضع 30 انبوت موزعة 5 5 5 5 5 5 كما في الصورة اعلاه


لاحظ الكود التالي :


moide = {};
for i=1,8 do
for p = 1, String.ToNumber(Input.GetText("nput"..i)) do
Table.Insert(moide, p, Label.GetText("Label"..i));
end
end

--------------------------------
for i=1,30 do
choi = Math.Random(1,#moide);
Input.SetText("Input"..i, moide[choi]);
Table.Remove(moide,choi);
end




الملف المفتوح

http://gulf-up.com/do.php?id=90945

تحياتي
-----------------------------------

بسم الله الرحمن الرحيم
فكره جميلة اخي المحترف
لكن تتكرر المواد في الصف الذي يمثل اليوم
http://e.top4top.net/p_124lubr1.png
موفق بإذن الله ... لك مني أجمل تحية .

عبد الهادي بهاب
04-05-2016, 11:31 PM
-----------------------------------

بسم الله الرحمن الرحيم
فكره جميلة اخي المحترف
لكن تتكرر المواد في الصف الذي يمثل اليوم
http://e.top4top.net/p_124lubr1.png
موفق بإذن الله ... لك مني أجمل تحية .




هذا هو مبدأ الاحتمالات ......لذلك لك ان تحصر الاحتمالات اكثر فاكثر باضافة شروط ساحاول في جزئية المواد في اليوم الواحد

عبد الهادي بهاب
05-05-2016, 01:25 AM
-----------------------------------
بسم الله الرحمن الرحيم
فكره جميلة اخي المحترف
لكن تتكرر المواد في الصف الذي يمثل اليوم
http://e.top4top.net/p_124lubr1.png
موفق بإذن الله ... لك مني أجمل تحية .




http://gulf-up.com/do.php?id=91014

ادخلت الغريد من باب امكانية تغيير عدد الحصص و حساب مجموعها مباشرة و هو الذي يسهل تصدير العمل كملف اكسل بعد تحقق الشرط

المهم .......بعد تكسار الراس لم اصل الى نتيجة تحل لي المشكل بكود واحد لكن قسمته الى ايام مما يجعل الكود طويل و متعب لذلك تعبت و ساحاول غذا ان كان في العمر بقية

بالتوفيق للجميع في انتظار ما يجود به الاخوة

ياسرهتهت
05-05-2016, 01:46 AM
http://gulf-up.com/do.php?id=91014

ادخلت الغريد من باب امكانية تغيير عدد الحصص و حساب مجموعها مباشرة و هو الذي يسهل تصدير العمل كملف اكسل بعد تحقق الشرط

المهم .......بعد تكسار الراس لم اصل الى نتيجة تحل لي المشكل بكود واحد لكن قسمته الى ايام مما يجعل الكود طويل و متعب لذلك تعبت و ساحاول غذا ان كان في العمر بقية

بالتوفيق للجميع في انتظار ما يجود به الاخوة

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

ثامر أبو بلقيس
05-05-2016, 06:30 PM
------------------------------------------------------

بسم الله الرحمن الرحيم

شكرا لك استاذي الكريم
تم التطبيق بنجاح
هذا الملف بعد تعديل اسماء الانبت

http://up.top4top.net/downloadf-124boko1-rar.html

عندي استفسار كيف استطيع تفادي تكرار اسم المادة مرتين في اليوم الواحد؟
الا اذا كان عدد الساعات المخصصه لها اكثر 6 في الاسبوع

كما تلاحط في الصوره

http://d.top4top.net/p_124ruy71.png

موفق بإذن الله ... لك مني أجمل تحية .
:abc_138::abc_138::abc_138:




عني لا أعرف للأسف وإن عرفت سأكتب متابع معكم موفق :abc_138:

ياسرهتهت
05-05-2016, 08:15 PM
بسم الله الرحمن الرحيم
شكرا لك استاذي الكريم وبارك الله فيك
كل التقدير والاحترام
:abc_138::abc_138:

ثامر أبو بلقيس
12-05-2016, 01:30 PM
يرفع لقراءة الطلب من جديد :abc_152:

ثامر أبو بلقيس
12-05-2016, 05:46 PM
السلام عليكم ورحمة الله وبركاته

خطوة نحو الحل لهده الاشكالية الصعبة :
قد يكمل الفكرة مبرمج
سيعلن عن الحصص في مصفوفة 30 حصة
السؤال المطروح ما هي التشكيلات الممكن تكوينها بهده المواد بحيث لا يتم تكرار مادة مرتين
جيد
جرب هدا :
items = { "رياضيات", "رياضيات", "رياضيات","رياضيات", "رياضيات", "رياضيات", "عربي", "عربي","عربي", "عربي", "عربي","انجليزي", "انجليزي", "انجليزي","انجليزي"
,"حاسوب", "حاسوب", "حاسوب","حاسوب", "فيزياء", "فيزياء","فيزياء", "كيمياء", "كيمياء","كيمياء", "احياء", "احياء","احياء"
, "اسلامية", "اسلامية"};
----------------------------------
repeat
flags = {}
my_table= {}
t =""
for i=1,table.getn(items) do
if not flags[items[i]] then
flags[items[i]] = true
t=t..items[i]..","
Table.Insert(my_table, 1, i);
end
end
Dialog.Message("Notice",t)
----------------------------------------
for x,y in pairs(my_table) do
Table.Remove(items, y);
end
my_table= {}
until #items==0
----------------------------------------

يلاحظ أنه سيتم الاعلان في كل مرة عن تشكيل صحيح بغض النظر
على عدد الحصص لانه مفروض بأتواعها

السؤال كيف يتم استغلال كل تشكيل ليوزع على الانبوتات كما ظهر

بالتوفيق :abc_152:

ياسرهتهت
13-05-2016, 02:08 AM
السلام عليكم ورحمة الله وبركاته

خطوة نحو الحل لهده الاشكالية الصعبة :
قد يكمل الفكرة مبرمج
سيعلن عن الحصص في مصفوفة 30 حصة
السؤال المطروح ما هي التشكيلات الممكن تكوينها بهده المواد بحيث لا يتم تكرار مادة مرتين
جيد
جرب هدا :
items = { "رياضيات", "رياضيات", "رياضيات","رياضيات", "رياضيات", "رياضيات", "عربي", "عربي","عربي", "عربي", "عربي","انجليزي", "انجليزي", "انجليزي","انجليزي"
,"حاسوب", "حاسوب", "حاسوب","حاسوب", "فيزياء", "فيزياء","فيزياء", "كيمياء", "كيمياء","كيمياء", "احياء", "احياء","احياء"
, "اسلامية", "اسلامية"};
----------------------------------
repeat
flags = {}
my_table= {}
t =""
for i=1,table.getn(items) do
if not flags[items[i]] then
flags[items[i]] = true
t=t..items[i]..","
Table.Insert(my_table, 1, i);
end
end
Dialog.Message("Notice",t)
----------------------------------------
for x,y in pairs(my_table) do
Table.Remove(items, y);
end
my_table= {}
until #items==0
----------------------------------------

يلاحظ أنه سيتم الاعلان في كل مرة عن تشكيل صحيح بغض النظر
على عدد الحصص لانه مفروض بأتواعها

السؤال كيف يتم استغلال كل تشكيل ليوزع على الانبوتات كما ظهر

بالتوفيق :abc_152:
--------------------------------------
بسم الله الرحمن الرحيم

شكرا لك استاذي الفاضل على المتابعة
الكود الجديد ؟ حاولت فهمه لكن لم استطع ؟
(السؤال كيف يتم استغلال كل تشكيل ليوزع على الانبوتات كما ظهر)

:abc_138: صعب :abc_138:

ثامر أبو بلقيس
13-05-2016, 10:51 PM
السلام عليكم ورحمة الله وبركاته
سأشرح لك الكود السايق لاحقا

وهذه فكرة أواقتراح آخر قد يكون أقرب إلى الحل

حتى تعاين النتائج الانبوتات الثلاثين "30 " يكون ترتيبها عكس ماجاء في الملف المقتوح
أي يكون ترتيبها عمودي
Input6 Input1
Input7 Input2
Input3 الخ
Input4
Input5

بعدما تفتح المشروع الجديد بهده المواصفات
جرب الكود التالي مباشرة :
items = { { "عربي", "عربي","عربي", "عربي", "عربي","عربي"},{"انجليزي","انجليزي"}
,{"حاسوب", "حاسوب", "حاسوب","حاسوب"},{ "فيزياء","فيزياء", "فيزياء","فيزياء"},{ "جغرافيا","جغرافيا"},{ "تاريخ", "تاريخ","تاريخ"}
,{ "اسلامية"},{ "هندسة","هندسة"},{ "رياضيات", "رياضيات", "رياضيات","رياضيات", "رياضيات","رياضيات"}};
-----------------------------------------------------------
c=1
my_table = {};
my_table2 = {};
for p = 1,Table.Count(items) do
for k=1,Table.Count(items[p]) do
if Table.Count(items[p]) >=6 then
Table.Insert(my_table, c, items[p][k]);
Table.Remove(items[p], c);
c=c+1
end
end
end
for p1 = 1,Table.Count(items) do
for k1=1,Table.Count(items[p1]) do
Table.Insert(my_table2, 1, items[p1][k1]);
end
end
for u,pp in pairs(my_table2)do
Input.SetText("Input"..u, pp);
end
for g,t in pairs(my_table)do
Input.SetText("Input"..Table.Count(my_table2)+g, t);
end

اذا كانت الناتج مرضيا بعد تجربة احتمالات اخرى
ستتقلص دائرة البحث فقط عن كيفية التعبير وتجزئة مجموعة لمجموعات من نفس النوع
كالمعلن عنه في بداية الكود
لك في الموقع الكثير من الاشارات لذالك فقط دقق البحث
موفق :abc_138:

ياسرهتهت
13-05-2016, 11:54 PM
السلام عليكم ورحمة الله وبركاته
سأشرح لك الكود السايق لاحقا

وهذه فكرة أواقتراح آخر قد يكون أقرب إلى الحل

حتى تعاين النتائج الانبوتات الثلاثين "30 " يكون ترتيبها عكس ماجاء في الملف المقتوح
أي يكون ترتيبها عمودي
Input6 Input1
Input7 Input2
Input3 الخ
Input4
Input5

بعدما تفتح المشروع الجديد بهده المواصفات
جرب الكود التالي مباشرة :
items = { { "عربي", "عربي","عربي", "عربي", "عربي","عربي"},{"انجليزي","انجليزي"}
,{"حاسوب", "حاسوب", "حاسوب","حاسوب"},{ "فيزياء","فيزياء", "فيزياء","فيزياء"},{ "جغرافيا","جغرافيا"},{ "تاريخ", "تاريخ","تاريخ"}
,{ "اسلامية"},{ "هندسة","هندسة"},{ "رياضيات", "رياضيات", "رياضيات","رياضيات", "رياضيات","رياضيات"}};
-----------------------------------------------------------
c=1
my_table = {};
my_table2 = {};
for p = 1,Table.Count(items) do
for k=1,Table.Count(items[p]) do
if Table.Count(items[p]) >=6 then
Table.Insert(my_table, c, items[p][k]);
Table.Remove(items[p], c);
c=c+1
end
end
end
for p1 = 1,Table.Count(items) do
for k1=1,Table.Count(items[p1]) do
Table.Insert(my_table2, 1, items[p1][k1]);
end
end
for u,pp in pairs(my_table2)do
Input.SetText("Input"..u, pp);
end
for g,t in pairs(my_table)do
Input.SetText("Input"..Table.Count(my_table2)+g, t);
end

اذا كانت الناتج مرضيا بعد تجربة احتمالات اخرى
ستتقلص دائرة البحث فقط عن كيفية التعبير وتجزئة مجموعة لمجموعات من نفس النوع
كالمعلن عنه في بداية الكود
لك في الموقع الكثير من الاشارات لذالك فقط دقق البحث
موفق :abc_138:

------------------------------------------
بسم الله الرحمن الرحيم
شكرا جزيلاً استاذي الكريم
هذا الكود يحقق المطلوب بدقة
مع عدم التكرار في نفس اليوم

:abc_138::abc_138:ممتاز جدا :abc_138::abc_138:

موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
14-05-2016, 12:22 AM
------------------------------------------------------------------
items = {{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{ }};
for g = 1,ComboBox.GetCount("ComboBox1")do
for y = 1,ComboBox.GetItemData("ComboBox1", g) do
Table.Insert( items[g], y, ComboBox.GetItemText("ComboBox1", g));
end
end
-----
c=1
my_table = {};
my_table2 = {};
for p = 1,Table.Count(items) do
for k=1,Table.Count(items[p]) do
if Table.Count(items[p]) >=6 then
Table.Insert(my_table, c, items[p][k]);
Table.Remove(items[p], c);
c=c+1
end
end
end
for p1 = 1,Table.Count(items) do
for k1=1,Table.Count(items[p1]) do
Table.Insert(my_table2, 1, items[p1][k1]);
end
end
for u,pp in pairs(my_table2)do
Input.SetText("Input"..u, pp);
end
for g,t in pairs(my_table)do
Input.SetText("Input"..Table.Count(my_table2)+g, t);
end

حتى لا تتخلى على عنصر ComboBox1
يكفي 17 مادة أو أقل و يمكنك الاضافة بالتعبير {} دون تأثير :abc_138: موفـــق :abc_138:

ياسرهتهت
14-05-2016, 06:29 PM
------------------------------------------------------------------
items = {{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{ }};
for g = 1,ComboBox.GetCount("ComboBox1")do
for y = 1,ComboBox.GetItemData("ComboBox1", g) do
Table.Insert( items[g], y, ComboBox.GetItemText("ComboBox1", g));
end
end
-----
c=1
my_table = {};
my_table2 = {};
for p = 1,Table.Count(items) do
for k=1,Table.Count(items[p]) do
if Table.Count(items[p]) >=6 then
Table.Insert(my_table, c, items[p][k]);
Table.Remove(items[p], c);
c=c+1
end
end
end
for p1 = 1,Table.Count(items) do
for k1=1,Table.Count(items[p1]) do
Table.Insert(my_table2, 1, items[p1][k1]);
end
end
for u,pp in pairs(my_table2)do
Input.SetText("Input"..u, pp);
end
for g,t in pairs(my_table)do
Input.SetText("Input"..Table.Count(my_table2)+g, t);
end

حتى لا تتخلى على عنصر ComboBox1
يكفي 17 مادة أو أقل و يمكنك الاضافة بالتعبير {} دون تأثير :abc_138: موفـــق :abc_138:
-------------------------------------
بسم الله الرحمن الرحيم

جازك الله كل خير
استاذي الفاضل
افادك الله كما افدتني
موفق بإذن الله ... لك مني أجمل تحية .
:abc_138::abc_138: