لبيان الحلقة. المهام النموذجية


مهمة أوجد مجموع كل الأعداد الصحيحة بين 100 و 500. & nbsp؛

لنكتب برنامجًا يحل هذه المشكلة دون استخدام صيغة. & nbsp ؛ إذا كتبنا فقط نتيجة الإضافة إلى المتغير s ، على سبيل المثال ،
\ (s = 100 + 101 + 102 + 103 + ... + 500 \) ،

سنقضي الكثير من الوقت في التسجيل نفسه ، لأن الكمبيوتر لن يفهم كيفية استخدام علامة القطع في تعبير حسابي وسيتعين علينا كتابة جميع الأرقام من 100 إلى 500. وستكون قيمة مثل هذا البرنامج ضئيلة. خاصة إذا أردنا تغيير أرقامنا واتخاذ نطاق مختلف.

ماذا يجب ان نفعل؟
إذا انتبهنا إلى الإدخال أعلاه ، فإننا نستخدم باستمرار الإضافة & quot؛ + & quot ؛.
يمكنك محاولة إضافة الأرقام إلى المتغير s تدريجيًا. على سبيل المثال ، باستخدام هذا الترميز
s = s + i .
ماذا فعلنا:
1) على اليمين نضع التعبير s + i ، ، أي أننا نأخذ قيمة المتغير s & nbsp؛ ونضيفها قيمة المتغير إليها i ؛
2) على اليسار ، قمنا بتعيين اسم المتغير & nbsp ؛ s ، أي ، سيتم تخزين نتيجة الحساب بالكامل على اليمين في نفس & nbsp ؛ متغير s ، لذلك سنقوم بتغيير قيمة المتغير s . & nbsp؛
يبقى فقط تغيير قيمة المتغير i في النطاق المطلوب. يمكن القيام بذلك باستخدام حلقة لـ .
نبسب ؛
يجب أن تدخل الأرقام من 100 إلى 500 الموجودة في نطاقنا في المتغير i بدوره. & nbsp؛
مثال // مهم! تحتاج أولاً إلى إعادة تعيين المتغير s ، // بحيث في الخطوة الأولى يضاف الرقم 100 إلى الصفر ، // وليس ما في الذاكرة! ق = 0 ؛ لـ (i = 100 ؛ i & lt ؛ = 500 ؛ i ++) // رأس الحلقة التي يكون فيها المتغير i s = s + i ؛ // يغير قيمتها من 100 إلى 500 بزيادات من 1 ، // في جسم الحلقة تدريجيًا إلى المتغير s ، نبسب ؛ // أضف قيمة المتغير المتغير i ، // ويتم تخزين النتيجة مرة أخرى في المتغير s هذا الحل مشابه جدًا لحساب مجموع الإجراءات:
\ (s = 0 + 100 = 100 ، \\ s = 100 + 101 = 201 ، \\ s = 201 + 102 = 303 \\ ... \)

أقصى رقم بين أرقام معينة عند دراسة المعامل الشرطي ، تطرقنا إلى موضوع إيجاد العدد الأقصى من عدة أرقام تم إدخالها. في مشكلة "الحد الأقصى أربعة أرقام" استخدمنا الخوارزمية التالية:
1. قم بتعيين قيمة للمتغير M لأول المتغيرات الأربعة ؛
2. إذا كانت قيمة المتغير الثاني أكبر من قيمة المتغير M ، فاستبدل قيمة المتغير M & nbsp؛ بقيمة المتغير الثاني ؛
3. إذا كانت قيمة المتغير الثالث أكبر من قيمة المتغير M ، فاستبدل قيمة المتغير M بقيمة المتغير الثالث ؛ < ر /> 4. إذا كانت قيمة المتغير الرابع أكبر من قيمة المتغير M ، فاستبدل قيمة المتغير M & nbsp؛ بقيمة المتغير الرابع.

يمكن ملاحظة أن كل & nbsp؛ الرقم & nbsp؛ (دعنا نشير إليه بواسطة X ) قمنا بمقارنته بالمتغير M ، على النحو التالي:
نبسب ؛

الكود الزائف <قبل> إدخال X إذا (M
الشيء الرئيسي في هذا الكود هو تحديد القيمة الأولية التي سيحصل عليها المتغير M .
عادة ، عند حل مشكلة إيجاد حد أقصى أو أدنى ، يتم تعيين القيمة الأولية للمتغير M مساوية للرقم الأول.
وبالتالي ، يجب تنفيذ الكود أعلاه مرة واحدة أقل من عدد الأرقام (لأنه يجب إدخال الرقم الأول وتخزينه كقيمة أولية للمتغير M ).
إذا كان لدينا عدد من الأرقام التي تم تعيينها من لوحة المفاتيح (على سبيل المثال ، في المتغير n ) ، فيمكننا تنظيم دورة ( من 2 إلى n ) ، باستخدام نفس الرقم لتخزين متغير الرقم.

حاول كتابة البرنامج بنفسك.

ليس الحد الأقصى بين الجميع إذا احتجنا إلى إيجاد الحد الأقصى (الحد الأدنى) ليس بين جميع الأرقام التي تم إدخالها ، ولكن فقط بين الأرقام التي تفي بشرط معين ، فيجب أن نأخذ في الاعتبار حقيقة أن الرقم الأول الذي نأخذه كقيمة أولية للحد الأقصى (الحد الأدنى) لن يلبي دائمًا متطلباتنا.

على سبيل المثال ، إذا كنا نبحث عن الحد الأقصى للرقم السالب ، فحينئذٍ يكون لدينا مجموعة البيانات: \ (\ {5، -2، 4، 2، -1، -3 \} \ ) سنحصل على الرقم 5 في القيمة الأولية للحد الأقصى ، وهو رقم موجب وأكبر من أي قيمة سالبة. ومن هنا الشرط X & GT. سيظل M خطأ دائمًا.

لذلك ، لا يكفي إضافة فحص واحد فقط لرقم سالب إلى الخوارزمية من المشكلة السابقة ، بل من الضروري أيضًا مراعاة حقيقة أن الرقم الأول قد لا يفي بالشرط المطلوب (في هذه الحالة ، يكون سالبًا ).

يمكنك إصلاح ذلك عن طريق إضافة الشرط التالي داخل الحلقة:

الكود الزائف <قبل> إذا كانت X سالبة ، إذن إذا M & gt ؛ = 0 أو M & lt ؛ X إذن م = س
في الكود المحدد ، يسمح لك الشرط & nbsp؛ M & gt؛ = 0 بتنفيذ الإجراء & nbsp؛ M = X حتى إذا كان M & nbsp؛ يحتوي المتغير في البداية على قيمة أكبر بشكل واضح من الباقي (في مثالنا ، القيمة تساوي 5).

نلاحظ أيضًا أنه إذا كان نطاق الأرقام معروفًا ، فيمكن اعتبار الحد الأدنى (الحد الأقصى) للرقم من النطاق المحدد كقيمة أولية للحد الأقصى (الحد الأدنى).

مهمة يتم إعطاء أرقام N. أوجد ثاني أكبر عنصر في تسلسل.

هذه المسألة تسمح بتفسيرين.
على سبيل المثال ، إذا حصلنا على مجموعة من الأرقام: \ (10 ​​\ 15 \ 20 \ 35 \ 14 \ 35 \ 10 \) ، فماذا يجب أن تكون الإجابة ؟
تحت "ثاني أكبر عنصر" أو ببساطة "الحد الأقصى الثاني" ، يمكن فهمها على النحو التالي:
1) القيمة التي ستكون في المكان قبل الأخير إذا رتبنا (فرزنا) جميع القيم بترتيب غير تنازلي (كل قيمة تالية أكبر من القيمة السابقة أو مساوية لها). ثم بالنسبة لمجموعة الأرقام المدروسة ، ستكون الإجابة هي القيمة 35 ؛
2) قيمة العنصر وهي أكبر من الحد الأقصى فقط. ثم الجواب هو 20.
إذا كان هناك عنصر واحد فقط كحد أقصى في مجموعة الأرقام (كل العناصر الأخرى أقل) ، فسيكون كلا التفسيرين متماثلين ، وستكون الإجابة واحدة لكلتا الحالتين ، وإلا ستكون الإجابة مختلفة.

ضع في اعتبارك الحالة الأولى (سنكتب الخوارزمية في pseudocode ).
للعثور على الإجابة ، سنستخدم متغيرين:
1) max1 - القيمة القصوى (الحد الأقصى الأول) ؛
2) max2 - الثانية القصوى (إجابتنا).

إذا كان نطاق تغيير القيم معروفًا ، فحينئذٍ كقيم أولية نأخذ رقمًا من الواضح أنه أقل من الحد الأدنى للنطاق (على سبيل المثال ، مع نطاق من -1000 إلى 1000 - خذ الرقم -1001 )
إذا كان نطاق القيم غير معروف ، فيمكنك كتابة أول رقمين للإدخال في القيم الأولية للمتغيرين max1 و max2 ، ثم المقارنة بينهما متغيرين. <قبل> إدخال N // عدد الأرقام المدخلات أ ، ب max1 = أ max2 = ب إذا ب & GT. أ ، إذن نبسب ؛ نبسب ؛ max1 = ب نبسب ؛ نبسب ؛ max2 = أ
بعد ذلك ، نأخذ في الاعتبار جميع العناصر الأخرى (تم عرض أول 2 بالفعل ، لذلك سنبدأ من الثالث) <قبل> nc لأني من 3 إلى n إدخال أ إذا أ & GT. max1 // كانت هناك قيمة أكبر من max1 الذي - التي max2 = max1 // القمة الأولى السابقة تصبح الثانية max1 = a // سيكون العنصر الجديد هو الحد الأقصى الأول خلاف ذلك // العنصر التالي لا يزيد عن max1 // يجب مقارنتها بالقيمة القصوى 2 إذا أ & GT. بحد أقصى 2 الذي - التي max2 = a // اعتبرها على أنها القيمة الجديدة max2 // لا يتغير max1 في هذه الحالة الجميع الجميع kts
حاول تنفيذ هذه الخوارزمية بنفسك.