• 0
طالبمنصور

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

سؤال

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

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

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

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

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

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

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

5 إجابة على هذا السؤال .

  • 0

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

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

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

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


#include<iostream>
using namespace std;

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

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

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

Pascal[i][0] = 1;

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

return 0;
}

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

#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;

}

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

مرحبا بابن بلدي و صديقي الغالي :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[i]=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 :

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

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

تم تعديل بواسطه أحمد المتألق
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

تم تعديل بواسطه طالبمنصور
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .