دنباله اعداد چند جمله ای

mar_jan

New Member
سلام دوستان خسته نباشید
میخواستم اگه ممکنه و کسی بلده بهم کمک کنه برنامه آسونه تا یه قسمتاییش حل کردم ولی کلا با مشکل مواجه میشم
برنامه ترجیحا باید با تابع بازگشتی باشه اول با آرایه تعدادی اعداد گرفته که این اعداد به عنوان ضریب x عمل میکنند و عددی هم برای توان ها که خودش در ظول برنامه کمتر میشه
اگه کسی بده لطفا بنویسه یا راهنمایی کنه
شکل زیر باید ایجاد شه

a[SUB]n[/SUB]X[SUP]n[/SUP]+ a[SUB]n-1[/SUB]X[SUP]n-1[/SUP]+a[SUB]n-2[/SUB]X[SUP]n-2[/SUP]+ a[SUB]n-3[/SUB]X[SUP]n-3[/SUP]

این دنباله تا n ادامه دارد.
فقط بیشتر توی عدد گیری اولیه که میخواد آرایه باشه و به تابع بفرسته مشکل دارم
:sad::shock:

مثال در زیر:

2X[SUP]3[/SUP]+5X[SUP]2[/SUP]+6X[SUP]1[/SUP]+5X[SUP]0[/SUP]
 

the_king

مدیرکل انجمن
سلام دوستان خسته نباشید
میخواستم اگه ممکنه و کسی بلده بهم کمک کنه برنامه آسونه تا یه قسمتاییش حل کردم ولی کلا با مشکل مواجه میشم
برنامه ترجیحا باید با تابع بازگشتی باشه اول با آرایه تعدادی اعداد گرفته که این اعداد به عنوان ضریب x عمل میکنند و عددی هم برای توان ها که خودش در ظول برنامه کمتر میشه
اگه کسی بده لطفا بنویسه یا راهنمایی کنه
شکل زیر باید ایجاد شه

a[SUB]n[/SUB]X[SUP]n[/SUP]+ a[SUB]n-1[/SUB]X[SUP]n-1[/SUP]+a[SUB]n-2[/SUB]X[SUP]n-2[/SUP]+ a[SUB]n-3[/SUB]X[SUP]n-3[/SUP]

این دنباله تا n ادامه دارد.
فقط بیشتر توی عدد گیری اولیه که میخواد آرایه باشه و به تابع بفرسته مشکل دارم
:sad::shock:

مثال در زیر:

2X[SUP]3[/SUP]+5X[SUP]2[/SUP]+6X[SUP]1[/SUP]+5X[SUP]0[/SUP]

کد:
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

float calc(float x, int n, float a[], int i)
{
    if (i < 0)
        return 0;
    return a[i] * pow(x, n) + calc(x, n - 1, a, i - 1);
}

int main()
{
    float x, a[4];
    cout << "Please enter value of x :" << endl;
    cin >> x;
    int n;
    cout << "Please enter value of n :" << endl;
    cin >> n;
    for (int i = n; i >= n - 3; i--)
    {
        cout << "Please enter value of a(" << i << ") :" << endl;
        cin >> a[3 + i - n];
    }
    cout << "Result = " << calc(x, n, a, 3) << endl;
    getch();
    return 0;
}
 

mar_jan

New Member
doste aziz dasteton dard nakone vaqean mamnoonam


faghat ye soal age nakham az tabe pow estefade konm chi jash bzaram?
:)
 
آخرین ویرایش:

the_king

مدیرکل انجمن
doste aziz dasteton dard nakone vaqean mamnoonam


faghat ye soal age nakham az tabe pow estefade konm chi jash bzaram?
:)

لطفا پینگلیش ننویسید، در مجید آنلاین پینگلیش نوشتن ممنوعه. در صورتی که به هر دلیلی امکان تایپ کردن مستقیم حروف فارسی برایتان میسر نیست،
می توانید از ابزار Transliterate سایت گوگل استفاده نمایید : Type in Persian - Google Transliteration

برای تابع pow دو تا راه حل هست، یکی اش اینه که <include <math.h# رو بردارید، و بجایش یک تابع pow دست نویس قبل از float calc اضافه کنید :
کد:
[COLOR="#A9A9A9"]#include <iostream>
#include <conio.h>

using namespace std;[/COLOR]

[B]float pow(float x, int n)
{
    float p = 1;
    for (int i = 0; i < n; i++)
        p *= x;
    return p;
}[/B]

[COLOR="#A9A9A9"]float calc(float x, int n, float a[], int i)
{
    if (i < 0)
        return 0;
    return a[i] * pow(x, n) + calc(x, n - 1, a, i - 1);
}[/COLOR]

راه حل دوم اینه که اصلا تابع جداگانه ای برای محاسبه توان بکار نبرید، توی همان تابع اصلی calc توان رو حساب کنید :
کد:
[COLOR="#A9A9A9"]#include <iostream>
#include <conio.h>

using namespace std;[/COLOR]

float calc(float x, int n, float a[], int i)
{
    if (i < 0)
        return 0;
[B]    float p = 1;
    for (int i = 0; i < n; i++)
        p *= x;
[/B]    return a[i] * [B]p[/B] + calc(x, n - 1, a, i - 1);
}
 

جدیدترین ارسال ها

بالا