الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف لي أن أعرف قوسم عدد ما بالديلفي

مغلق
بدأه medreg في 11 أبريل 2007 · 12 رد · 1,106 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم لقد سبق لي وان وضعت هذا لكن عن طريق سؤال

والآن اريد أن أوضح لكم شيئ عني

أنا موظف في مؤسسة واعمل بالمحاسبة

ومن كثرة تراكم الأعمال علي

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

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

ارجو الآن تفهم وضعي وكما قلت انا لست بطالب او تلميذ يريد ان يستغل المنتدى في حل تمارينه حاشا لا ولم اوافق على هذا ابدًا

والآن بعدما شرحت لكم وضعي فارجو ان تساعدوني على ايجا قواسم العدد 12

ببرنامج وشرح الطريقة

شكرًا

#2

التعليمة mod تعطيك باقي القسمة

مثلا

 12 mod 5  =  2
#3

ما اردت توضيحه هو

إذا ادخلنا العدد 12 في edit

على ان يعطينا قواسمه والمتمثلة في

1,2,3,4,6,12

في label من خلال ضغطنا على Button

هذا مااردت ان افهم

#4
for i:=1 to strtoint(edit1.text) do if strtoint(edit1.text)mod i=0 then 
label.caption:=label.caption+'*'+inttostr(i);

تم تعديل هذه المشاركة بواسطة bachirk في 12 أبريل 2007 في 01:19

#5

bachirk ما شاء الله عليك

قرآت الموضوع قبل لا تضع انت جوابك ... وكتبت كود يعطي نفس النتيجة

لكن الحمد للة انك وضعت جوابك قبلي ...

لو شفت طريقتي راح تضحك لمدة شهر متواصل

واحتمال ادارة المنتدى يطردوني .. ويعتبروني عااااااااار على مبرمجين الدلفي .. : )

تخيل .. بعد سنين من البرمجة اول مرة اعرف فائدة Mod

شكرآ لك .

#6

حل الأخ bachirk صحيح و لكن:

اللوب يجب أن يبدء من 2 ولغاية العدد نفسه -1 لأن أي عدد يقبل القسمة على 1 ونفسه وشكراً.

فيكون السطر الأول من الكود على الشكل التالي:

for i:=2 to strtoint(edit1.text)-1 do if strtoint

#7
Mer كتب:
اللوب يجب أن يبدء من 2 ولغاية العدد نفسه -1

من 2 الى نصف العدد

d4baa0.gif
#8

من الممكن ان لا تحتاج للوصول الى نصف العدد

i:=0;
repeat
i:=i+1;
if strtoint(edit1.text) mod  i=0 then
begin
label1.caption=label1.caption+'*'+inttostr(i);
label1.caption=label1.caption+'*'+inttostr(strtoint(edit1.text)  div i);
end;
until (strtoint(edit1.text) div i)<=i;

تم تعديل هذه المشاركة بواسطة bachirk في 13 أبريل 2007 في 03:32

#9
bachirk كتب:
من الممكن ان لا تحتاج للوصول الى نصف العدد

i:=0;
repeat
i:=i+1;
if strtoint(edit1.text) mod  i=0 then
begin
label1.caption=label1.caption+'*'+inttostr(i);
label1.caption=label1.caption+'*'+inttostr(strtoint(edit1.text)  div i);
end;
until (strtoint(edit1.text) div i)<=i;

هذا الكود به خطا تكرار الأرقام ، و حبذا لو أخذت برأي المشرف

أي وصول الحلقة التكرارية إلى نصف العدد ، فمن غير الممكن أن يكون أحد قواسم عدد أكبر تماما

من نصف العدد

و على العموم مشكور اخي الكريم

for i:=1 to strtoint(edit1.text) div 2 do
 if strtoint(edit1.text)mod i=0 then 
label.caption:=label.caption+'*'+inttostr(i);

خيركم من تعلم القرأن و علمه

#10

هذا الكود صحيح وهو نفس فكرة الكود السابق

i:=1;
while ( (strtoint(edit1.text) div i)>i) do
begin
if strtoint(edit1.text) mod  i=0 then
begin
label1.caption:=label1.caption+'*'+inttostr(i);
label1.caption:=label1.caption+'*'+inttostr(strtoint(edit1.text)  div i);
end;
i:=i+1;
end;
#11

اخ bachirk هل يدخل العدد نفسه في مجموعة قواسمه ؟

d4baa0.gif
#12

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

#13

صحيح،

تذكرت التعريف:

العدد الاولي هو الذي مجموع قواسمه تساوي اثنين

d4baa0.gif

هذا الموضوع مغلق.

مواضيع مشابهة