اذهب إلى المحتوى
  • 0

طباعة مثلث باسكال بحلقة For واحدة 

محمد عنيبة

السؤال

Recommended Posts

  • 0

مثلثث باسكال هو مثلث يستخدم لحساب معاملات ذات الحدين و هو يعمل بالطريقة التالية:

PascalTriangleAnimated2.gif.19c8f59459b8c255c7f15de99644813b.gif

لاحظ أيضًا أن الأرقام الموجودة في كل سطر هي عبارة عن الرقم 11 مرفوع لأس يساوي رقم السطر.

و لطباعة مثلث باسكال باستخدام حلقة for واحدة يمكنك استخدام الكود التالي"Python":

# Print Pascal's Triangle in Python 

# input n 
n = 5

# iterarte upto n 
for i in range(n): 
	# adjust space 
	print(' '*(n-i), end='') 

	# compute power of 11 
	print(' '.join(map(str, str(11**i)))) 

الناتج.

     1                //  11^0
    1 1               //  11^1
   1 2 1              //  11^2
  1 3 3 1             //  11^3
 1 4 6 4 1            //  11^4

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

مرحبا محمد،

يوجد طريقة لرسم مثلث باسكال بحلقة واحد عن طريق تركيب قوائم من السطر السابق للسطر الحالي

ونستخدم الخوارزمية التراجعية للتعويض عن الحلقة الأخرى ..

فقط لجعل الشكل متناسق يتطلب طباعة عدة فراغات (لتعمل بلا حلقة علينا تنفيذ عملية مكافئة كما في الشفيرة بعد التعليق)

برنامج بلغة جافا

package pascaltriangle;

import java.util.ArrayList;
import java.util.List;

public class PascalTriangle {

    public static void main(String[] args) {
		// تهيئة متحولات البرنامج
        int noOfRows = 8;
        int counter = 1;
        List<Integer> list = new ArrayList<>();
        list.add(1);

        itMe(list, counter, noOfRows);
    }

    public static List<Integer> itMe(List<Integer> list, int counter, int noOfRows) {
        
        /*
        for (int i=0;i<=noOfRows-counter;i++)
            System.out.print(" ");
        System.out.println(list);
         */
      
        System.out.println(new String(new char[noOfRows - counter]).replace("\0", " ") // عدد الفراغات
                 +
                list.toString().replace("[", " ").replace("]", " ").replace(", ", " ")); // تنسيق الطباعة

      
        List<Integer> tempList = new ArrayList<>();

        tempList.add(1);
        for (int i = 1; i < list.size(); i++) { // دمج القائمتين السابقتين و إضافة العنصر الأوسط المجموع لعددين
            tempList.add(list.get(i) + list.get(i - 1));
        }
        tempList.add(1);

        if (counter != noOfRows) { // طالما لم نصل للعدد المناسب نعيد الاستدعاء
            itMe(tempList, ++counter, noOfRows);
        }

        return tempList;
    }
}

بالتوفيق

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 6‏/12‏/2020 at 22:20 قال Mohammed ON:

كيف أنشِئ برنامج يطبع مثلث باسكال بحلقة For واحدة 

 

 

download.png

كيف اطبع نفس هذا البرنامج بلغه c++؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...