نمایش نتایج 1 تا 12 از 12

نام تاپیک: مثلث خیام ( کمک به حل مسئله)

  1. #1
    کاربر جدید آواتار x.coder
    تاریخ عضویت
    آذر 1388
    محل زندگی
    T-_.A___bR-.-._i___Z
    سن
    35
    پست
    6

    Arrow مثلث خیام ( کمک به حل مسئله)

    با عرض سلام و ادب خدمت همه ی بچه های گل جامعه برنامه نویس
    من تو مسئله ی مثلث خیام مشکل پیدا کردم اگه میشه کمکم کنید
    * - برنامه ای را بنویسید که n جمله را از ورودی خوانده و مثلث خیام را تا n جمله چاپ کندو

    مثال: تا 6 جمله


    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1

  2. #2

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    برنامتون رو بنویسید ، تا اگه اشکال داشت ، مشکل رو دوستان بگن یا من اگه تونستم بگم ...

    راهنمایی 1 : می تونید از ترکیب استفاده کنید ... جمله اول ترکیب 1 چاپ میشه ... جمله دوم ترکیب 0 از 1 و ترکیب 1 از 1 ... جمله سوم ترکیب 0 از 2 ، ترکیب 1 از 2 ، ترکیب 2 از 2 ... بقیه هم همین طوری ...

    راهنمایی 2 : بهتره که با تابع بازگشتی ترکیب رو بنویسید ...

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    شما اگر در نحوه تحلیل شکل از روش خود خیام استفاده می کردید راحت تر به نتیجه می رسیدید.

    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    /*
    1
    1 1
    1 2 1
    1 3 3 1
    1 4 6 4 1
    1 5 10 10 5 1
    1 6 15 20 15 6 1
    */
    int main()
    {
    int Nums [200]={0}, tmp, n, c;
    clrscr();
    cout<<"enter khayam number : ";
    cin>>n;
    c=n-1;
    Nums[c] = 1;
    for( int i=0; i<n; i++)
    {
    cout<<"\n ";
    for( int j=0; j<c; j++ )
    cout<<" ";
    for( int j=0; j<=i; j++){
    tmp = Nums[c+j] + Nums[c+j+1] ;
    cout<<tmp<<" ";
    Nums[c+j] = tmp;
    }
    c--;
    }
    return 0;
    }

  4. #4
    کاربر دائمی آواتار emadfa
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    رشت
    پست
    193

    Wink نقل قول: مثلث خیام ( کمک به حل مسئله)

    مثلث خیام بدون استفاده از آرایه و با استفاده از مفهوم جایگشتی:



    #include <iostream>
    #include <iomanip>
    using namespace std;
    int Fact(int);
    void main(void)
    {
    int num, n;
    cout << "Enter the number of rows: " << endl;
    cin >> n;
    for(int i = 0 ; i<=n-1 ; i++)
    {
    for(int j = 0 ; j<=i ; j++)
    {
    if(j == 0 || j==i)
    num = 1;
    else
    num = Fact(i) / (Fact(j) * Fact(i-j));
    cout << setw(6) << num;
    }
    cout << endl;
    }
    }
    // Factorial /function
    int Fact(int num)
    {
    int fact = 1;
    for(int i = 1 ; i<=num ; i++)
    fact *= i;
    return fact;
    }





  5. #5
    کاربر دائمی آواتار emadfa
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    رشت
    پست
    193

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    مبنای اصلی الگوریتم فوق:











  6. #6

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    مونش در هفت سطر:




    رابطه ریاضی بین اعداد:
    (a+b)0 = 1 (1)
    (a+b)1 = a+b (1,1)
    (a+b)2 = a2+2ab+b2 (1,2,1)
    (a+b)3 = a3+3a2b+3ab2+b3 (1,3,3,1)
    (a+b)4 = a4+4a3b2+6a2b2+4a2b3+b4 (1,4,6,4,1)

    این برنامه رو من در زبان پاسکال نوشتم و به درستی کار میکنه.البته طبق طول میدانی که بهش دادم تا عدد 12 اعداد قاطی نمیشن!
    به احتمال قوی کمکت نمیکنه اما رویه کارم اینجوی بود:
    اول یه آرایه دو بعدی تعریف کردم
    بعد از تولید هر عدد اون رو در آرایه خودش ذخیره کردم و در لاین بعدی از این دستور استفاده کردم:
    a[i,j]:=a[i-1,j-1]+a[i-1,j];

    اینطور که دو تا آرایه کنار هم رو جمع کنه و در آرایه لاین پایینی قرار بده.
    درصورت نیاز بهم بگو تا سورس ها رو بهت بدم.

    اینم لینک دانلود مثلث خیام در زبان پاسکال
    http://myprograms.persiangig.com/oth...cal/PasTra.zip

    پسورد:www.myprograms.blogsky.com

    من این برنامه رو با استفاده از آرایه ها و حلقه for نوشتم.

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    شهرمون
    پست
    171

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    سلام دوستان
    من مثلث خيام رو با ماتريس پايين مثلثي نوشتم ولي
    اگر بخوايم با اريه هاي يه بعدي بنويسيم بايد چي كار كنيم
    من به ذهنم رسيده كه مثلا وقتي كاربر وارد ميكنه 4(4 خط داشته باشه)
    ارايه مون 4 بار چاپ بشه يعني خط اول a0خط دومa0,a1خط سوم a0,a1,a2تا اخر
    يعني به اين شكل
    A0=1
    A0=1 , a1=1
    A0=1 , a1=a0+a1=2 , a2=1
    A0=1, a1=a0+a1=3, a2=a1+a2=3, a3=1
    كه البته اول a2محاسبه ميشه بعد a1
    اين جوري بايد بنويسم؟
    اگه اره چيكارش كنم
    در واقع مشكلم اينه كه حلقه foرو چجوري بزارم كه همش رو هي چاپ كنه

  8. #8
    کاربر دائمی آواتار amir-yeketaz
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    تهران
    پست
    508

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    اینم من نوشتم با یه راه حل دیگه (بدون تابع)
    مال خیلی وقت پیشه و خیلی مبتدیانه نوشته شده
    نه از آرایه نه از تابع و نه از راه حل توابع بازگشتی در نوشتن این برنامه استفاده شده!!!!
    #include <stdio.h> 
    int main(){
    int i,j,a,b,sum,poa,pob,factn,factm,factnm,n,m;
    a=1;b=1;n=1;
    printf("tedade satrhaye mosollas khayam=");scanf("%d",&m);
    printf("1\n");
    while(n<=m){
    i=0;
    while(i<=n){
    j=1;
    factn=1;
    while(j<=n){
    factn=factn*j;
    j=j+1;
    }
    j=1;
    factm=1;
    while(j<=n-i){
    factm=factm*j;
    j=j+1;
    }
    j=1;
    factnm=1;
    while (j<=i){
    factnm=factnm*j;
    j=j+1;
    }
    poa=1;
    j=0;
    while ( j<n-i){
    poa=poa*a;
    j=j+1;
    }
    pob=1;
    j=0;
    while (j<i){
    pob=pob*b;
    j=j+1;
    }
    sum=factn/(factm*factnm)*poa*pob;
    printf("%d ",sum);
    i=i+1;
    }
    n=n+1;
    printf("\n");
    }
    return 0;
    }
    راه حل این برنامه بر اساسه واقعیته خو مثلث خیامه یعنی (a+b) به توان n که در مثلث خیام
    a=1,b=1 میباشد و توان هم از صفر شروع میشود که عدد به توان صفر، یکه که من اول پرینتش کردم یعنی شما باید راه حل نوشتن (a+b) به توان n رو باید بلد باشید وبقیش هم که آسونه

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    شهرمون
    پست
    171

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    اينم به صورت ارايه دوبعديه
    #include <stdio.h>
    #include <conio.h>
    void khayyam(int array[][100],int row)
    {
    int i,j;
    for(i=0;i<row;i++)
    {
    for (j=0;j<row;j++)
    {
    if (j==0)
    {
    array[i][0]=1;
    }
    else if(i==j)
    {
    array[i][j]=1;
    }
    else if(j>i)
    {
    array[i][j]=0;
    }
    else
    {
    array[i][j]=array[i-1][j]+array[i-1][j-1];
    }
    }
    }
    }
    void print(int array[][100], int row)
    {
    int i,j;
    for (i=0;i<row;i++)
    {
    for(j=0;j<row;j++)
    {
    printf ("%4d", array[i][j]);
    }
    printf ("\n");
    }
    }
    int main()
    {
    int n, i, j, A[100][100];
    printf("enter number of row\n");
    scanf ("%d", &n);
    khayyam(A,n);
    print(A,n);
    getch();
    return 0;
    }




    ولي كسي راهي كه من گفتم رو بلد نيست؟

  10. #10
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    تهران
    پست
    227

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    سلام،
    با استفاده از دو تا آرایه ی یه بعدی میشه اینکارو انجام داد. واسه ی به دست آوردن عناصر خیام توی سطر n ام فقط به عناصر آرایه توی سطر n-1 ام نیاز هست... هر دفعه عناصر سطر n-1 رو بریز تو یه آرایه ی کمکی و از اون آرایه ی کمکی عناصر سطر n ام رو به دست بیار.

    البته راهی بود که فقط با استفاده از یه دونه آرایه ی یه بعدی میشد اینکارو انجام داد که من یادم نمیاد متاسفانه.

  11. #11

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    بانوی ایران عزیز
    فکر کنم اگه در قسمت بالای مثلث به جای صفرها کاراکتر فاصله تعریف میکردید بهتر میشد .

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    شهرمون
    پست
    171

    نقل قول: مثلث خیام ( کمک به حل مسئله)

    سلام الهه خانم
    من ارايه رو به صورت intتعريف كردم و بايد توي شرطي كه چك ميكنه" i " از" j "بزرگتره يه مقداري رو انتصاب بدم به ارايه
    نميشه كه spaceبزارم

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •