ضرب کردن چند جمله ای ها در ++c

lighting

Member
برای این که الگوریتمی بنویسیم که دو تا چند جمله ای رو که هر کدوم رو با استفاده از ارایه دو بعدی نوشتیم رو نشون بده اول دو تا ارایه لازم داریم که این جوری باشه:
کد:
[LEFT]float P[2][n];
float T[2][m]; [/LEFT]
بعد از اون اگه فرض کنیم که p مثلا باشه p=x^3+4x^2 و حالا T رو هم مثلا فرض کنیم T=3x^2+2x اون موقع ضربشون می شه که ضرایب رو با هم ضرب کنیم توان ها رو با هم جمع ولی الگوریتمش جور در نمی اد چون دوتا سرتیتر برای هر قسمت ارایه داریم یکی به نام توان و دومی به نام ضریب؟
مثلا این جوری ولی تو ارایه:(مثلا این برای p می شه)​
2 3 توان
4 1 ضریب​
 
آخرین ویرایش:

the_king

مدیرکل انجمن
برای این که الگوریتمی بنویسیم که دو تا چند جمله ای رو که هر کدوم رو با استفاده از ارایه دو بعدی نوشتیم رو نشون بده اول دو تا ارایه لازم داریم که این جوری باشه:
کد:
[LEFT]float P[2][n];
float T[2][m]; [/LEFT]
بعد از اون اگه فرض کنیم که p مثلا باشه p=x^3+4x^2 و حالا T رو هم مثلا فرض کنیم T=3x^2+2x اون موقع ضربشون می شه که ضرایب رو با هم ضرب کنیم توان ها رو با هم جمع ولی الگوریتمش جور در نمی اد چون دوتا سرتیتر برای هر قسمت ارایه داریم یکی به نام توان و دومی به نام ضریب؟
مثلا این جوری ولی تو ارایه:(مثلا این برای p می شه)​
2 3 توان
4 1 ضریب​

لطفا در هنگام نوشتن عنوان مبحث عبارتی رو انتخاب کنید که موضوع مبحث رو مشخص کنه، "سوال؟" اطلاعاتی
در مورد موضوع مبحث نمیده.
B1 - هر مبحث باید عنوانی داشته باشد که خلاصه ای از موضوع آن مبحث باشد، از عناوین مبهم و کلی استفاده نکنید.

بهتره که اون اندیس ای که مقدارش ثابته (2) رو به عنوان مولفه دوم بگیرید، نه اول. یعنی اصولی اش اینه که مولفه ای
رو زودتر قرار بدید که مقدارش ممکنه بعدا تغییر کنه.

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

اگر می خواهید این دو آرایه رو مطابق قانون ضرب چند جمله ای ها در هم ضرب کنید باید یک به یک اعضاء آرایه P
رو در یک به یک اعضاء آرایه T ضرب کنید و در آرایه سومی قرار بدهید. بعد وقتی همه اعضاء در هم ضرب شده اند
مواردی در آرایه سوم خواهد بود که توان شون یکسانه و با جمع کردن ضریب هاشون خلاصه تر میشه.

پس مراحل عبارتند از :
1) نوشتن حاصل ضرب یکی یکی اعضا در آرایه جدید
2) فاکتور گرفتن از اعضاء ای که توان یکسان دارند
3) حذف کردن عضو هایی که مقدار ضریب شون 0 است.

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

int main()
{
    int n = 2;
    int m = 2;
    int q = 0;
    int i, j;
    float P[][2] = {{1,3},{4,2}};
    float T[][2] = {{3,2},{2,1}};
    float **R = new float*[m * n];
    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
        {
            R[q] = new float[2];
            R[q][0] = P[i][0] * T[j][0];
            R[q][1] = P[i][1] + T[j][1];
            q++;
        }
    for (i = 0; i < q - 1; i++)
        for (j = i + 1; j < q; j++)
            if ((R[i][1] == R[j][1]))
            {
                R[i][0] += R[j][0];
                R[j][0] = 0;
            }
    j = q;
    q = 0;
    for (i = 0; i < j; i++)
        if (R[i][0] != 0)
        {
            R[q][0] = R[i][0];
            R[q][1] = R[i][1];
            q++;
        }
    for (i = 0; i < q; i++)
    {
        if ((i > 0) && (R[i][0] > 0))
           cout << " + ";
        if (R[i][0] != 1)
            cout << R[i][0];
        if (R[i][1] != 0)
        {
            cout << "x";
            if (R[i][1] != 1)
                cout << "^" << R[i][1];
        }
    }
    getch();
    return 0;
}
 

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

بالا