الحلقات التكرارية
#1
السلام عليكم ورحمة الله تعالى وبركاته

كيف أستبدل هذه الحلقة وأعني بها (FOR) بحلقة من إحدى هاتين الحلقتين WHILE أو REPEAT

مثال على ذلك: عندي العدد X والعدد Y بحيث اصل إلى قيمة هذين المجهولين اللذين جداؤهما هو العدد 63875
أعرف استخراجهما بالحلقة التكرارية التالية FOR لكنها لا تساعدني في مشكلات أخرى
[صورة: san4758stitre.png]
شكرا وبارك الله فيكم
الرد
#2
وعليكم السلام اخي

اولا باستعمال الحلقة 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;


بالتوفيق
وتعاونوا على البر و التقوى ، ولا تعاونوا على الاثم والعدوان
الرد
#3
ماذا أقول أخي الكريم
King SofT
أدعو الله أن يبارك لك في دنياك وآخرتك
وأن يديم الله سعادتك وأهلك
لقد جربتهما معا ونجحتا، حتى أنني فهمتهما بكل سهولة
شكرا
الرد
#4
السلام عليكم

للاستفادة الفرق بين 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;

بالتوفيق
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#5
جزاك الله عنا كل الخير أخي الكريم s.fateh
على الزيادة وعلى التوضيح
بارك الله فيك
الرد
#6
باستخدام حلقة 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;
الرد
#7
أخي الكريم B.M.AbdelAziZ
عندما رأيت المرة الأولى الكود، استغربت
لأنه قصير، بعدها عرفت أنك ربطت الجزء الصحيح من القسمة بالعدد a
ماشاء الله عليك في الإبداع
كل معلومة زودتمونا بها، جعلها الله في ميزان حسناتكم
كل الشكر والتقدير لك أخي
والسلام عليكم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم