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

نام تاپیک: چهار عمل اصلی برای چندجمله ایها

  1. #1

    Question چهار عمل اصلی برای چندجمله ایها

    میخام یه برامه بنویسم که دو تا چند جمله ای رو بتونه جمع و تفریق و ضرب کنه .
    از کلاسها هم استفاده شده باشه .
    ولی نمیدونم از کلاسها چجوری باید استفاده کنم . یعنی باید واسه این برنامه باید تا چه حد مسلط باشم واسه کلاسها !

  2. #2

    نقل قول: چهار عمل اصلی برای چندجمله ایها

    از لحاظ پیاده سازی شی گرایی ، ممکنه نحوه طراحی کلاس چند جمله ای متفاوت باشه ولی معمولا

    کلاسی که طراحی می کنند اعضای داده (Data member ) های خصوصی کلاس (Private ) رو یک

    int بعنوان term یا تعداد جملات چند جمله ای و یک آرایه دو بعدی term در 2 برای ذخیره چند جمله ای .

    یه مثال ساده :


    #include <iostream>
    #include <conio>
    class Polynomial{
    public:
    Polynomial(int);
    void Get();
    Polynomial Multiply(Polynomial);
    void Print();
    private:
    int term;
    int **a;};
    //====================================
    Polynomial::Polynomial(int tr){
    term = tr;
    a = new int*[term];
    for(int i=0;i<term;i++)
    a[i] = new int[2];}
    //================================
    void Polynomial::Get(){
    for(int i=0;i<term;i++){
    for(int j=0;j<2;j++){
    cin>>a[i][j];}
    }
    }
    //=================================
    void Polynomial::Print(){
    for(int i=0;i<term;i++){
    cout<<a[i][0]<<"X^"<<a[i][1]<<"+";
    }
    cout<<endl;}
    //=================================
    int main(){
    Polynomial p1(3);
    p1.Get();
    p1.Print();
    getch();}
    این فقط یه مثال برای ایده گرفتن هستش ! شما هر طوری که خواستین میتونید کلاس رو طراحی کنید .
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg pic.jpg‏ (14.6 کیلوبایت, 49 دیدار)






  3. #3

    نقل قول: چهار عمل اصلی برای چندجمله ایها


  4. #4

    نقل قول: چهار عمل اصلی برای چندجمله ایها

    باز هم این تایپیک رو بالا میارم

    ممنون از لطف دوستان

  5. #5
    کاربر تازه وارد آواتار giootin_tiz
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    شاهرود
    پست
    69

    نقل قول: چهار عمل اصلی برای چندجمله ایها

    hdklاینم 4 عمل اصلی با استفاده از کلاس که تقسیم رو هم انجام میده
    اول بالا ترین توان رو وارد میکنیم بعد توان ها و ضریب ها بعد دومی به همین ترتیب بعد +-*/ یکی را زده جواب را به ما میدهد


    #include<conio.h>
    #include<iostream.h>
    #define Max 20
    class Poly;
    class PolyNode
    {
    friend Poly;
    float Coef;
    int Pow;
    };
    class Poly
    {
    int n;
    PolyNode Data[Max];
    public:
    void Poly::SortPoly(void);
    void ReadPoly(void);
    void WritePoly(void);
    void AddPoly(Poly a,Poly b);
    void SubtractPoly(Poly a,Poly b);
    void MulPoly(Poly a,Poly b);
    void Poly::ItemPoly(float Coef,int Pow,Poly b);
    void Poly::TaghsimPoly(int k,Poly a,Poly b);
    };
    void Poly::SortPoly(void)
    {
    int i,j;
    PolyNode item;
    for(i=n-1;i>0;i--)
    for(j=0;j<i;j++)
    if(Data[j].Pow<Data[j+1].Pow)
    {
    item=Data[j];
    Data[j]=Data[j+1];
    Data[j+1]=item;
    }
    while(i<n-1)
    if(Data[i].Pow==Data[i+1].Pow)
    {
    Data[i].Coef+=Data[i+1].Coef;
    for(j=i+1;j<n-1;j++)Data[j]=Data[j+1];
    n--;
    }else i++;
    }
    void Poly::ReadPoly(void)
    {
    int i;
    cout<<"\nPlease enter parts of poly : ";
    cin>>n;
    cout<<"\nPlease enter Polynomial : \n\n";
    for(i=0;i<n;i++)
    {
    cin>>Data[i].Coef;
    cout<<" x^"<<endl;
    cin>>Data[i].Pow;
    cout<<" +"<<endl;
    }
    }
    void Poly::WritePoly(void)
    {
    int i;
    cout<<"\n";
    for(i=0;i<n;i++)cout<<Data[i].Coef<<"X^"<<Data[i].Pow<<" + ";
    }
    void Poly::AddPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n&&j<b.n)
    {
    if(a.Data[i].Pow>b.Data[j].Pow)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    else if(a.Data[i].Pow<b.Data[j].Pow)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    else if(a.Data[i].Coef+b.Data[j].Coef)
    {
    Data[k].Coef=a.Data[i].Coef+b.Data[j].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    j++;
    }
    else
    {
    i++;
    j++;
    }
    }
    while(i<a.n)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    while(j<b.n)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    n=k;
    }
    void Poly::SubtractPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n&&j<b.n)
    {
    if(a.Data[i].Pow>b.Data[j].Pow)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    else if(a.Data[i].Pow<b.Data[j].Pow)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    else if(a.Data[i].Coef-b.Data[j].Coef)
    {
    Data[k].Coef=a.Data[i].Coef-b.Data[j].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    j++;
    }
    else
    {
    i++;
    j++;
    }
    }
    while(i<a.n)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    while(j<b.n)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    n=k;
    }
    void Poly::MulPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n)
    {
    j=0;
    while(j<b.n)
    {
    Data[k].Coef=a.Data[i].Coef*b.Data[j].Coef;
    Data[k++].Pow=a.Data[i].Pow+b.Data[j++].Pow;
    }
    i++;
    }
    n=k;
    }
    void Poly::ItemPoly(float Coef,int Pow,Poly b)
    {
    int j,t;
    j=t=0;
    while(j<b.n)
    {
    Data[t].Coef=Coef*b.Data[j].Coef;
    Data[t++].Pow=Pow+b.Data[j++].Pow;
    }
    n=t;
    }
    void Poly::TaghsimPoly(int k,Poly a,Poly b)
    {
    Poly d,e;
    p:
    if(a.Data[0].Pow>=b.Data[0].Pow)
    {
    Data[k].Pow=a.Data[0].Pow-b.Data[0].Pow;
    Data[k].Coef=a.Data[0].Coef/b.Data[0].Coef;
    d.ItemPoly(Data[k].Coef,Data[k].Pow,b);
    e.SubtractPoly(a,d);
    k++;
    }
    n=k;
    if(e.Data[0].Pow>=b.Data[0].Pow)TaghsimPoly(k,e,b);
    else
    {
    cout<<"\nMod Is : \n";
    e.WritePoly();
    }
    }
    void main(void)
    {
    Poly a,b,c;
    char Sign;
    a.ReadPoly();
    a.SortPoly();
    cout<<"\nPlease enter sign(+,-,*,/) : ";
    cin>>Sign;
    b.ReadPoly();
    b.SortPoly();
    switch(Sign)
    {
    case'+':
    c.AddPoly(a,b);
    break;
    case'-':
    c.SubtractPoly(a,b);
    break;
    case'*':
    c.MulPoly(a,b);
    c.SortPoly();
    break;
    case'/':
    c.TaghsimPoly(0,a,b);
    break;
    }
    cout<<"\n\nAnswer Is : \n";
    c.WritePoly();
    getche();

  6. #6

    نقل قول: چهار عمل اصلی برای چندجمله ایها

    نقل قول نوشته شده توسط giootin_tiz مشاهده تاپیک
    hdklاینم 4 عمل اصلی با استفاده از کلاس که تقسیم رو هم انجام میده
    اول بالا ترین توان رو وارد میکنیم بعد توان ها و ضریب ها بعد دومی به همین ترتیب بعد +-*/ یکی را زده جواب را به ما میدهد


    #include<conio.h>
    #include<iostream.h>
    #define Max 20
    class Poly;
    class PolyNode
    {
    friend Poly;
    float Coef;
    int Pow;
    };
    class Poly
    {
    int n;
    PolyNode Data[Max];
    public:
    void Poly::SortPoly(void);
    void ReadPoly(void);
    void WritePoly(void);
    void AddPoly(Poly a,Poly b);
    void SubtractPoly(Poly a,Poly b);
    void MulPoly(Poly a,Poly b);
    void Poly::ItemPoly(float Coef,int Pow,Poly b);
    void Poly::TaghsimPoly(int k,Poly a,Poly b);
    };
    void Poly::SortPoly(void)
    {
    int i,j;
    PolyNode item;
    for(i=n-1;i>0;i--)
    for(j=0;j<i;j++)
    if(Data[j].Pow<Data[j+1].Pow)
    {
    item=Data[j];
    Data[j]=Data[j+1];
    Data[j+1]=item;
    }
    while(i<n-1)
    if(Data[i].Pow==Data[i+1].Pow)
    {
    Data[i].Coef+=Data[i+1].Coef;
    for(j=i+1;j<n-1;j++)Data[j]=Data[j+1];
    n--;
    }else i++;
    }
    void Poly::ReadPoly(void)
    {
    int i;
    cout<<"\nPlease enter parts of poly : ";
    cin>>n;
    cout<<"\nPlease enter Polynomial : \n\n";
    for(i=0;i<n;i++)
    {
    cin>>Data[i].Coef;
    cout<<" x^"<<endl;
    cin>>Data[i].Pow;
    cout<<" +"<<endl;
    }
    }
    void Poly::WritePoly(void)
    {
    int i;
    cout<<"\n";
    for(i=0;i<n;i++)cout<<Data[i].Coef<<"X^"<<Data[i].Pow<<" + ";
    }
    void Poly::AddPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n&&j<b.n)
    {
    if(a.Data[i].Pow>b.Data[j].Pow)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    else if(a.Data[i].Pow<b.Data[j].Pow)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    else if(a.Data[i].Coef+b.Data[j].Coef)
    {
    Data[k].Coef=a.Data[i].Coef+b.Data[j].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    j++;
    }
    else
    {
    i++;
    j++;
    }
    }
    while(i<a.n)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    while(j<b.n)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    n=k;
    }
    void Poly::SubtractPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n&&j<b.n)
    {
    if(a.Data[i].Pow>b.Data[j].Pow)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    else if(a.Data[i].Pow<b.Data[j].Pow)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    else if(a.Data[i].Coef-b.Data[j].Coef)
    {
    Data[k].Coef=a.Data[i].Coef-b.Data[j].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    j++;
    }
    else
    {
    i++;
    j++;
    }
    }
    while(i<a.n)
    {
    Data[k].Coef=a.Data[i].Coef;
    Data[k++].Pow=a.Data[i++].Pow;
    }
    while(j<b.n)
    {
    Data[k].Coef=b.Data[j].Coef;
    Data[k++].Pow=b.Data[j++].Pow;
    }
    n=k;
    }
    void Poly::MulPoly(Poly a,Poly b)
    {
    int i,j,k;
    i=j=k=0;
    while(i<a.n)
    {
    j=0;
    while(j<b.n)
    {
    Data[k].Coef=a.Data[i].Coef*b.Data[j].Coef;
    Data[k++].Pow=a.Data[i].Pow+b.Data[j++].Pow;
    }
    i++;
    }
    n=k;
    }
    void Poly::ItemPoly(float Coef,int Pow,Poly b)
    {
    int j,t;
    j=t=0;
    while(j<b.n)
    {
    Data[t].Coef=Coef*b.Data[j].Coef;
    Data[t++].Pow=Pow+b.Data[j++].Pow;
    }
    n=t;
    }
    void Poly::TaghsimPoly(int k,Poly a,Poly b)
    {
    Poly d,e;
    p:
    if(a.Data[0].Pow>=b.Data[0].Pow)
    {
    Data[k].Pow=a.Data[0].Pow-b.Data[0].Pow;
    Data[k].Coef=a.Data[0].Coef/b.Data[0].Coef;
    d.ItemPoly(Data[k].Coef,Data[k].Pow,b);
    e.SubtractPoly(a,d);
    k++;
    }
    n=k;
    if(e.Data[0].Pow>=b.Data[0].Pow)TaghsimPoly(k,e,b);
    else
    {
    cout<<"\nMod Is : \n";
    e.WritePoly();
    }
    }
    void main(void)
    {
    Poly a,b,c;
    char Sign;
    a.ReadPoly();
    a.SortPoly();
    cout<<"\nPlease enter sign(+,-,*,/) : ";
    cin>>Sign;
    b.ReadPoly();
    b.SortPoly();
    switch(Sign)
    {
    case'+':
    c.AddPoly(a,b);
    break;
    case'-':
    c.SubtractPoly(a,b);
    break;
    case'*':
    c.MulPoly(a,b);
    c.SortPoly();
    break;
    case'/':
    c.TaghsimPoly(0,a,b);
    break;
    }
    cout<<"\n\nAnswer Is : \n";
    c.WritePoly();
    getche();
    tank u veryyyyyyyyyyyyyyyyyy muchhhhhhhh

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

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