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

مشاهدة النسخة كاملة : سؤال بخصوص التكرار


ثامر أبو بلقيس
18-08-2013, 08:59 PM
السلام عليكم

في البدء أعتذر إن لم اشرح الطلب جيدا
أرغب في تعديل على هذا الكود المتعلق بالتكرار وهو :
for p in prim(100) do result = Dialog.Message("Notice", p);
end
حيث تنتج رسائل متتالية وددت التحكم فيها لتظهر النتائج كرسالة واحدة في Dialog.Message
أو في أي عنصر تقترحه

سلامي و احترامي

Haitham.2012
19-08-2013, 12:34 AM
الطلب غير واضح ,,,, نود المساعده :abc_152:

ثامر أبو بلقيس
19-08-2013, 12:46 AM
بارك الله فيك أستاذ هيثم
إليك أخي بهذا الملف يتكقل بتحليل العدد الطبيعي لجداء عوامله
الأولية لاحظ أن بعد كتابة العدد في الانبوت 1 بعد الضغط على المعاينة
أجبرت على إظهار التحليل على شكل رسائل متتابعة
أحببت أن تنزل دفعة واحدة في الأنبوت 2
http://www.gulfup.com/?tb6Foo

في كل الحالات لك كل التقدير :abc_152:

رعد الحواسيب
19-08-2013, 01:54 AM
ااااااااه من صداع الرأس :abc_070: ..

حاولت كثيرا لأصل إلى الحل ولم أصل إليه في النهاية ..

function primdiv(n)
assert(n ~= 0)
if n < 0 then n = -n end
local function f(_, v)
if n > 1 then
while n%v > 0 do
v = v + (v == 2 and 1 or 2)
if v*v > n then v = n end
end
n = n / v
return v
end
end
return f,nil,2
end


لكن بعد إذنك يا أخي حاول أن تشرح لي هذه النقاط : السطر الثاني - الرابع - الرابع عشر ..

ما فهمته من قراءتي عن assert عن أنه إذا لم يتحقق n ~= 0 تجعل n=nill وبتالي توقف بقية الدالة عن الإكمال هل فهمي صحيح ؟

جزاك الله خيرا أخي ثامر فدائما ما تجعلني أبحث وأستفيد ..

مرجع :

http://lua-users.org/wiki/IteratorsTutorial

Haitham.2012
19-08-2013, 12:32 PM
حقيقة لا أعرف ان كان هذا يفي بالغرض ...


Input.SetText("Input2", "");

my_table = {}

X=Input.GetText("Input1");
X = String.ToNumber(X);

i = 1

for p in primdiv(X) do

Table.Insert(my_table, i, p);

i = i + 1

end

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

for x,y in pairs (my_table) do

result = Input.GetText("Input2");

Input.SetText("Input2", result .. " , " .. y);

end

ثامر أبو بلقيس
19-08-2013, 01:23 PM
أخلاق عالية عند تقديم المساعدة
أوعند تقديم النصيحة بل حتى عند المرور للتشجيع
فرضت احترامك بحسن تعاملك
بارك الله فيك :abc_050:

رعد الحواسيب
19-08-2013, 07:10 PM
أخي أبو بلقيس آمل أن تجيب على أسئلتي إن لم يكن هناك مانع ..

بارك الله فيك

ثامر أبو بلقيس
19-08-2013, 07:59 PM
أخي الكريم ..
أرى أنه لا علاقة بين assert و ماذكرت لهذا أحذف تماما السطر
ليصبح
function primdiv(n)
if n < 0 then n = -n end
local function f(_, v)
if n > 1 then
while n%v > 0 do
v = v + (v == 2 and 1 or 2)
if v*v > n then v = n end
end
n = n / v
return v
end
end
return f,nil,2
end

و للإصدار السابع اعتمدت على هذا :
function primdiv(n)
if n < 0 then n = -n end
local function f(_, v)
if n > 1 then
while Math.Mod(n, v) > 0 do
v = v + (v == 2 and 1 or 2)
if v*v > n then v = n end
end
n = n / v
return v
end
end
return f,nil,2
end

حتى يعمل

هذا ما أعرف

رعد الحواسيب
19-08-2013, 09:02 PM
ماكان يحيرني كثيرا هذا السطر فالـv لا أعرف لها قيمة معينة ..

local function f(_, v)

أسأل الله أن يفهمنا ويعلمنا ما ينفعنا وينفعنا بما علمنا

الله المستعان ..

Haitham.2012
20-08-2013, 01:23 PM
أخلاق عالية عند تقديم المساعدة
أوعند تقديم النصيحة بل حتى عند المرور للتشجيع
فرضت احترامك بحسن تعاملك
بارك الله فيك :abc_050:

جزاك الله خيرا اخي الكريم ... وهذا بعض ما عندكم
:abc_152: