انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: ضرب چند جمله ای بصورت لیست پیوندی یکطرفه  (دفعات بازدید: 1790 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
سلام و عرض ادب به تمامی کاربران عزیز

یک پروژه ای داشتم در مورد ضرب چند جمله ای بصورت لیست پیوندی یکطرفه در C++ که باید فردا تحویل بدم ممنون میشم هر کی این پروژه رو داره دیغ نکنه لینکشو بزاره خیلی ممنون میشم

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
تا الان چقدر از اون رو نوشتید؟ و مشکلتون کجای اون هست؟

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
ممنون از توجهتون

تونستم از گوگل یه چیزایی پیدا کنم اما باید مفهوم کد رو هم بدونم که متاسفانه به مشکل برخوردم کد زیر رو نگاه کنید

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node
{
    float coef;
    int expo;
    struct node *next;
};
 
struct node *create(struct node *);
struct node *insert_s(struct node *,float,int);
struct node *insert(struct node *,float,int);
void display(struct node *ptr);
void poly_add(struct node *,struct node *);
void poly_mult(struct node *,struct node *);
int main( )
{
    struct node *start1=NULL,*start2=NULL;
 
    printf("Enter polynomial 1 :\n");
    start1=create(start1);
 
    printf("Enter polynomial 2 :\n");
    start2=create(start2);
 
    printf("\nPolynomial 1 is :  ");
    display(start1);
    printf("\nPolynomial 2 is :  ");
    display(start2);
 
    poly_add(start1, start2);
    poly_mult(start1, start2);
    getch();
    return 0;
}
 
struct node *create(struct node *start)
{
    int i,n,exp;
    float coeff;
    printf("Enter the number of terms : ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("Enter coeficient for term %d : ",i);
        scanf("%f",&coeff);
        printf("Enter exponent for term %d : ",i);
        scanf("%d",&exp);
        start=insert_s(start,coeff,exp);
    }
    return start;
}
struct node *insert_s(struct node *start,float co,int ex)
{
    struct node *ptr,*tmp;
    tmp=(struct node *)malloc(sizeof(struct node));
    tmp->coef=co;
    tmp->expo=ex;
    /*list empty or exp greater than first one */
    if(start==NULL || ex > start->expo)
    {
        tmp->next=start;
        start=tmp;
    }
    else
    {
        ptr=start;
        while(ptr->next!=NULL && ptr->next->expo >= ex)
            ptr=ptr->next;
        tmp->next=ptr->next;
        ptr->next=tmp;
    }
    return start;
}
 
struct node *insert(struct node *start,float co,int ex)
{
    struct node *ptr,*tmp;
    tmp=(struct node *)malloc(sizeof(struct node));
    tmp->coef=co;
    tmp->expo=ex;
    /*If list is empty*/
    if(start==NULL)
    {
        tmp->next=start;
        start=tmp;
    }
    else    /*Insert at the end of the list*/
    {
        ptr=start;
        while(ptr->next!=NULL)
            ptr=ptr->next;
        tmp->next=ptr->next;
        ptr->next=tmp;
    }
    return start;
}
 
void display(struct node *ptr)
{
    if(ptr==NULL)
    {
        printf("\nZero polynomial\n");
        return;
    }
    printf("\n");
    while(ptr!=NULL)
    {
        printf("(%.1fx^%d)", ptr->coef,ptr->expo);
        ptr=ptr->next;
        if(ptr!=NULL)
            printf(" + ");
        else
            printf("\n");
    }
}
void poly_add(struct node *p1,struct node *p2)
{
    struct node *start3;
    start3=NULL;
 
    while(p1!=NULL && p2!=NULL)
    {
        if(p1->expo > p2->expo)
        {
            start3=insert(start3,p1->coef,p1->expo);
            p1=p1->next;
        }
        else if(p2->expo > p1->expo)
        {
            start3=insert(start3,p2->coef,p2->expo);
            p2=p2->next;
        }
        else if(p1->expo==p2->expo)
        {
            start3=insert(start3,p1->coef+p2->coef,p1->expo);
            p1=p1->next;
            p2=p2->next;
        }
    }
    /*if poly2 has finished and elements left in poly1*/
    while(p1!=NULL)
    {
        start3=insert(start3,p1->coef,p1->expo);
        p1=p1->next;
    }
    /*if poly1 has finished and elements left in poly2*/
    while(p2!=NULL)
    {
        start3=insert(start3,p2->coef,p2->expo);
        p2=p2->next;
    }
    printf("\nAdded polynomial is : ");
    display(start3);
}
 
void poly_mult(struct node *p1, struct node *p2)
{
    struct node *start3;
    struct node *p2_beg = p2;
    start3=NULL;
    if(p1==NULL || p2==NULL)
    {
        printf("\nMultiplied polynomial is zero polynomial\n");
        return;
    }
   
   
    while(p1!=NULL)
    {
        p2=p2_beg;
        while(p2!=NULL)
        {
            start3=insert_s(start3,p1->coef*p2->coef,p1->expo+p2->expo);
            p2=p2->next;
        }
        p1=p1->next;
    }
    printf("\nMultiplied polynomial is : ");
    display(start3);
}

ممنون میشم مفهوم کد ها رو برام بگین و اینکه آیا کد بالا درست هستش ؟

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
مثلا این قسمت چه کاری رو انجام میده :
struct node *create(struct node *);
struct node *insert_s(struct node *,float,int);
struct node *insert(struct node *,float,int);
void display(struct node *ptr);
void poly_add(struct node *,struct node *);
void poly_mult(struct node *,struct node *);
و مفهوم این قسمت چه هستش ؟
struct node *insert_s(struct node *start,float co,int ex)
{
    struct node *ptr,*tmp;
    tmp=(struct node *)malloc(sizeof(struct node));
    tmp->coef=co;
    tmp->expo=ex;
    /*list empty or exp greater than first one */
    if(start==NULL || ex > start->expo)
    {
        tmp->next=start;
        start=tmp;
    }
    else
    {
        ptr=start;
        while(ptr->next!=NULL && ptr->next->expo >= ex)
            ptr=ptr->next;
        tmp->next=ptr->next;
        ptr->next=tmp;
    }
    return start;
}

خیلی جا مشکل دارم ممنون میشم راهنماییم کنید

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
این کد به زبان سی هستش. زبان سی رو بلدید؟

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
تا حدودی

و اینکه میشه این کد رو به C++ تبدیل کرد؟

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
بله، میشه.

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
البته میدونم وقتتون با ارزشه اما ممنون میشم زحمتش رو بکشید تبدیلش کنید چون واقعا فردا برای من حیاتیه

خیلی ممنون

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
متاسفم دوست من، این تمرین‌ها یا پروژه‌ها یا تکلیف‌ها برای اینه که خودتون اینکار رو انجام بدید و این موارد رو یاد بگیرید. اگر مشکل خاصی دارید، دقیقا اون رو بگید و سعی می‌کنم کمکتون کنم.

آفلاین mostafa4875

  • Newbie
  • *
  • ارسال: 6
  • جنسیت : پسر
 ??? ??? ???