سلام به دوستان
میخواستم یکمی در مورد مثلث خیام بدونم میخوام برنامشو بنویسم اما چون از ریاضی زیاد سر در نمیارم نمیدونم چه جوری باید فرمولشو دربیارم تقریبا یه چیزایی فهمیدم ولی بازم نیاز به کمک دارم
ممنون
سلام به دوستان
میخواستم یکمی در مورد مثلث خیام بدونم میخوام برنامشو بنویسم اما چون از ریاضی زیاد سر در نمیارم نمیدونم چه جوری باید فرمولشو دربیارم تقریبا یه چیزایی فهمیدم ولی بازم نیاز به کمک دارم
ممنون
امام حسین علیهالسلام معلم مقاومت آگاهانه است.
امام خامنه ای
سلام به دوست گلم جوان ایرانی عزیز :
من خیلی خوشحال میشم که روی این طرح با هم کار کنیم چون به نظرم جالب امد
کم کم هم بقیه بچه ها جمع میشن
ارام تر سکوت کن : ... !
صدای بی تفاوتی هایت ازارم می دهدکلاس های برنامه نویسی ( اموزش )
کلاس های برنامه نویسی سایت ( اطلاعیه )
سلام
تنها مشخصه ای که این مثلث داره، اینه که هر عنصر از جمع دو عنصر بالایی بدست میاد.
از طرف دیگه عناصر کناری هم 1 هستند.
برای شبیه سازی از ماتریس (آرایه) استفاده کنید. این ماتریس (آرایه) را کامل نیاز نداریم. فقط نصفه ی پایینی یا بالایی (بالامثلثی یا پایین مثلثی) اش را میخواهیم.(چون شکلمون مثلثی هست و نصفش کافیه :) )
فرض کنید من با نصفه پایینی کار می کنم. قطر اصلی و ستون اول ماتریس را با 1 پر میکنیم .چون شکل مثلث این طوریه. عناصر بین این دو قسمت را به این شکل که "هر خانه آرایه از جمع خانه بالایی و خانه سمت چپ خانه بالایی " بدست می آوریم.
این کار را برای همه خانه های وسط 1 ها انجام بدید.1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
اين يك بسط هست كه در حسابان سوم رياضي وجود داره و فرمولش (a+b)^ 2 هستش
اينم سورس كد برنامهPrivate Sub Khayam(x As Integer)
x = x - 1
Dim ar() As Integer
Dim prev As Integer
Dim nex As Integer
Dim cur As Integer
ReDim ar(x, x * 2)
ar(0, x) = 1
For i = 1 To x
For j = 0 To x * 2
If j = 0 Then prev = 0 Else prev = ar(i - 1, j - 1)
If j = x * 2 Then nex = 0 Else nex = ar(i - 1, j + 1)
cur = prev + nex
ar(i, j) = cur
Next j
Next i
For i = 0 To x
For j = 0 To x * 2
If ar(i, j) = 0 Then Print Space(5); Else Print ar(i, j);
Next j
Next i
End Sub
Private Sub Command1_Click()
Call Khayam(9)
End Sub
کد زبان c، به روشی که توضیح دادم را هم گفتم بذارم. فقط دقت کنید که این کد برای چاپِ مثلثِ خیامِ برعکس هستش!
کد:#include <stdio.h>#include <stdlib.h> #include<conio.h> int main() { void khaiam(); khaiam(); getch(); return 0; } void khaiam(){ int n; printf("Enter number of rows:"); scanf("%d",&n); int i,j,a[100][100]; for(i=0;i<n;i++){ a[i][i]=1; a[i][0]=1; } for(i=2;i<n;i++){ for(j=1;j<n;j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; }int k,o=0; for(i=n-1;i>=0;i--){ for(k=0;k<o;k++) printf(" "); for(j=i;j>=0;j--) printf("%4d",a[i][j]); printf("\n\r");o++;}}
ممنون از کمک و جواب دوستان فقط یه سوال چرا همگی داخل یه تابع نوشتید برنامه رو؟؟؟ مثلث خیامی که من روش کار میکردم این شکلی بود یه ماتریس یازده در شش مثل شکل زیر
جاهایی که صفر هستش باید اسپیس قرار بگیره و دقیقا خروجی به همین صورت چاپ میشه
بازم از جواب هایی که دادی ممنون
امام حسین علیهالسلام معلم مقاومت آگاهانه است.
امام خامنه ای
خواهش می کنم.
خب برنامه ای من نوشتم را اگه اجرا میکردید، همین خروجی را داشت اما برعکس! انگار سر مثلثه به سمت پایین باشه.
مثالی هم که زدید اون جدوله یه حالت خاص از برنامه ایه که نوشتم.
اون اعدادی که من بالا زیر هم نوشتم نه مثلثی به خاطر این بود که نحوه ذخیره سازی اش در آرایه را گفتم ، نه نحوه چاپش در صفحه نمایش!
درمورد اینکه یه تابع نوشتم، خب پس چندتا بنویسم؟ هرتابع یه وظیفه را میتونه برعهده بگیره .تابعی که من نوشتم، کار پیاده سازی مثلث را داره.
این یکی کد، دقیقا خودِ خیام-پاسکال هستش، نه عکسش.
ازش خروجی بگیرید. اگه به سوالی که می پرسه جواب بدید 6، دقیقا جدول شما را ترسیم میکنه.
کد:#include <stdio.h>#include <stdlib.h> #include<conio.h> int main() { void khaiam(); khaiam(); getch(); return 0; } void khaiam(){ int n; printf("Enter number of rows:"); scanf("%d",&n); int i,j,a[100][100]; for(i=0;i<n;i++){ a[i][i]=1; a[i][0]=1; } for(i=2;i<n;i++){ for(j=1;j<n;j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; }int k,o=n; for(i=0;i<=n-1;++i){ for(k=0;k<o;k++) printf(" "); for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n\r");o--;}}
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)
علاقه مندی ها (Bookmarks)