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

ما هي أفضل طريقة لكتابة كود يظهر مثلث باسكال

بدأه طالبمنصور في 15 يوليو 2010 · 5 رد · 6,649 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لسلام عليكم و رحمة الله و بركاته

هذه أول مشاركة لي في هذا الصرح الجميل و يسرني أن أبدأ معكم بموضوع للنقاش حول أفضل طريقة لإظهار مثلث باسكال حسب المُدخلات :)

المطلوب هو : أكتب برنامج بلغة السي يطلب من المستخدم عدد صحيح ثم يعرض مثلث باسكال الذي يقابل العدد المُدخل.

ما هي أفضل طريقة لإظهار المثلث (موضوع للنقاش) !؟

بانتظار إبداعات الإعضاء الكرام :wub:

أخوكم طالب منصور.

2
#2

كتبت لك هذا الكود

لكن لا أدري ما قصدك من موضوع ( المقابل للعدد المدخل ! )

أنا أعرف أن الذي ينتج عندي من الكود التالي هو مثلث باسكال

وكتبته على أساس برمجي بحت ولم أتعمق في خصائص المثلث الرياضية

#include<iostream>
using namespace std;

int main()
{
	int Pascal[10][10] = {0};
	int i,k;

	for(i=0; i<9; i++)
	{
		Pascal[0] = 1;

		for(k=0; k<=i; k++)
			Pascal[i+1][k+1] = Pascal[k] + Pascal[k+1];
	}

	Pascal[0] = 1;

	for(i=0; i<10; i++,cout<<endl)
		for(k=0; k<=i; k++)
			cout << Pascal[k] << " ";

	return 0;
}
2

البرمجة = الرياضيات

#3
#include <iostream.h>

      int main()

      {

      int n;
     cout<<"Enter (n)->";
     cin >> n;

      for (int y = 0; y < n; y++)

      {

      int c = 1;
      cout.width(n - y );

      for (int x = 0; x <= y; x++)

      {

      cout << c << " ";

      c = c * (y - x) / (x + 1);

     }

      cout<<endl;

      }

      cout<<endl;

      return 0;

      }

هذه الطريقة الرياضية لمثلث باسكال..... تحياتي

2 −1
581916181.jpg

#4

السلام عليكم و رحمة الله و بركاته

مرحبا بابن بلدي و صديقي الغالي :wub:

مرحبا بك يا محمد في منتديات الفريق العربي للبرمجة و نتمنى لك أن تستفيد و تُفيد :)

بالنسبة لكتابة كود يُظهر مثلث باسكال حسب العدد المُدخل فيمكننا أن نستخدم مصفوفة ثنائية البعد و نأخذ متغيرين i و j , الأول يقابل رتبة سطر المثلث و الثاني يقابل رتبة العمود ثم نملأ الجدول بالقيم Cij المطلوبة.

العداد i يتغير من 0 و حتى n-1 (حيث n تمثل عدد الأسطر المطلوبة) و لكل قيمة لـ i سيتغير j من 0 و حتى i.

نضع القيمة 1 في:

pascal(0,0)

و لكل سطر رتبته i نذهب من i=1 و نعمل التالي:

نضع القيمة 1 في

pascal(i,0)

و

pascal(i,i)

و هما طرفي السطر ذو الرتبة i.

و لكل قيمة لـ j نعمل التالي:

pascal(i,j)=pascal(i-1,j)+pascal(i-1,j-1)

حيث j يتغير من 1 و حتى i-1.

و لكي أسهل عليك الفكرة اكتفيت باستخدام مصفوفة أحادية البعد كما في الكود التالي:

#include<stdio.h>
#include<conio.h>
#define NMAX 13//القيمة القصوى لعدد الأسطر
int main()
{
    int pascal[NMAX],//هذه المصفوفة تمثل سطر من المثلث
        i,//دليل أسطر المثلث
        j,//دليل أعمدة المثلث
        n;//عدد الأسطر المطلوبة
        printf("Combien de lignes voulez vous ? ");  
    scanf("%d",&n);//قراءة عدد الأسطر المطلوبة
    if(n>NMAX) n=NMAX;//إذا كان عدد الأسطر كبير فسيتم إرجاعه للقيمة القصوى
        تنسيق الإظهار
    printf("\n\n p   ");
    for(i=0;i<=n;i++)
    printf("%5d",i);
    printf("\n n \n");
    for(i=0;i<=n;i++)
    printf("-----");
    printf("\n");
    /* حساب و إظهار كل سطر من أسطر المثلث*/
    for(i=0;i<n;i++)
    {
       pascal=1;
       for(j=i-1;j>=0;j--)
       pascal[j]=pascal[j-1]+pascal[j];
       printf("%2d --",i);
       for(j=0;j<=i;j++)
       printf("%5d",pascal[j]);
       printf("\n");
    }
    getch();//إيقاف الشاشة من أجل مشاهدة مخرجات الكود
    return 0;
}

و هذه صورة لمُخرجات الكود:

07wxmgc16.png

بالنسبة لي فقد اخترت القيمة 13 كقيمة قصوى لعدد أسطر المثلث لأنه إذا كانت قيمة عدد الأسطر كبيرة فسيؤثر ذلك سلبا على شكل إظهار المثلث .. لأن عرض الشاشة قصير و لا يسمح بذلك و بإمكانكم التجربة.

بالنسبة للإخوة namespace و Industrious :

الأخ طالب منصور طلب الحل بالسي و ليس بالسي++

في أمان الله :)

تم تعديل هذه المشاركة بواسطة أحمد المتألق في 16 يوليو 2010 في 18:23

2
#5

السلام عليكم

أشكركم على المشاركة و أعتذر عن التأخير لظروف قاهرة ! :blush:

تم تعديل هذه المشاركة بواسطة طالبمنصور في 22 يوليو 2010 في 19:14

#6

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

أين محاولتك ؟ أين أنت ؟ حتى ردك الثاني اقتباس من مشاركتك الأصلية ! !

البرمجة = الرياضيات

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…