المشاركات : 60
المواضيع 22
:
: 10
الإنتساب : Jul 2012
السلام عليكم ورحمة الله تعالى وبركاته
كيف أستبدل هذه الحلقة وأعني بها (FOR) بحلقة من إحدى هاتين الحلقتين WHILE أو REPEAT
مثال على ذلك: عندي العدد X والعدد Y بحيث اصل إلى قيمة هذين المجهولين اللذين جداؤهما هو العدد 63875
أعرف استخراجهما بالحلقة التكرارية التالية FOR لكنها لا تساعدني في مشكلات أخرى
![[صورة: san4758stitre.png]](http://img232.imageshack.us/img232/3568/san4758stitre.png)
شكرا وبارك الله فيكم
المشاركات : 171
المواضيع 41
:
: 0
الإنتساب : Dec 2009
وعليكم السلام اخي
اولا باستعمال الحلقة Repeat
كود :
var a,b:integer;
begin
a:=3;
repeat
b:=0;
repeat
if a*b=63875 then
begin
Edit1.Text:=IntToStr(a);
Edit2.Text:=IntToStr(b);
Exit;
end else
b:=b+1;
until b=1000;
a:=a+1;
until a=1000;
end;
الان باستعمال الحلقة While
كود :
var a,b:integer;
begin
a:=3;
while a<1000 do begin
b:=0;
while b<1000 do begin
if a*b=63875 then
begin
Edit1.Text:=IntToStr(a);
Edit2.Text:=IntToStr(b);
exit;
end else
b:=b+1;
End;
a:=a+1;
End;
end;
بالتوفيق
وتعاونوا على البر و التقوى ، ولا تعاونوا على الاثم والعدوان
المشاركات : 60
المواضيع 22
:
: 10
الإنتساب : Jul 2012
ماذا أقول أخي الكريم
King SofT
أدعو الله أن يبارك لك في دنياك وآخرتك
وأن يديم الله سعادتك وأهلك
لقد جربتهما معا ونجحتا، حتى أنني فهمتهما بكل سهولة
شكرا
المشاركات : 975
المواضيع 50
:
: 218
الإنتساب : Feb 2008
السلام عليكم
للاستفادة الفرق بين Repeat و while
Repeat تتحقق من الشرط عند النهاية until و لذلك سينفذ الكود مرة اخرى قبل الخروج من الحلقة while تحقق من
الشرط عند البداية و لذلك لن ينفذ الكود ما لم يتحقق الشرط ...
باستخدام حلقة while
كود :
procedure TForm1.Button2Click(Sender: TObject);
var
a,b: Integer;
begin
a := 2;
while a <= 100 do
begin
b := 0;
while b <= 1000 do
begin
if (a * b = 63875) then
begin
Edit1.Text := IntToStr(a);
Edit2.Text := IntToStr(b);
end;
inc(b);
end;
inc(a);
end;
end;
بالتوفيق
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
المشاركات : 60
المواضيع 22
:
: 10
الإنتساب : Jul 2012
جزاك الله عنا كل الخير أخي الكريم s.fateh
على الزيادة وعلى التوضيح
بارك الله فيك
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
باستخدام حلقة Repeat وبطريقة اخرى اسرع!
كود :
Var d:integer;
begin
d:=1;
Repeat
inc(d);
Until frac(63875/d)=0;
Edit1.Text := IntToStr(d);
Edit2.Text := FloatToStr(63875/d);
end;
المشاركات : 60
المواضيع 22
:
: 10
الإنتساب : Jul 2012
أخي الكريم B.M.AbdelAziZ
عندما رأيت المرة الأولى الكود، استغربت
لأنه قصير، بعدها عرفت أنك ربطت الجزء الصحيح من القسمة بالعدد a
ماشاء الله عليك في الإبداع
كل معلومة زودتمونا بها، جعلها الله في ميزان حسناتكم
كل الشكر والتقدير لك أخي
والسلام عليكم