تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: کمک در مورد برنامه با موضوع جند جمله ای به زبان C

  1. #1
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    424

    پيش فرض کمک در مورد برنامه با موضوع جند جمله ای به زبان C

    سلام دوستان من این برنامه رو میخواستم بنویسم
    و نیاز به راهنمایی دارم

    (ضرب چند جمله اي ها)


    برنامه باید بتواند دو چند جمله اي که در فایل به نام in.txt نوشته شده است بخواند و حاصل ضرب آنها را در فایل دیگري (با نام out.txt ) بنویسد.

    ساختار فایل:
    فایل ورودي به صورت متنی است و در خط اول چند جمله اي اول و در خط دوم چند جمله اي نوشته شده
    است. یک نمونه ورودي به صورت زیر است.
    2x + 3x^2 + 6x^5 + 4x^3
    3x^2 + 5x + 6x^3
    توضیح اینکه تعداد جملات هر سطر نامعلوم است، بنابراین

    "باید" از لیست پیوندي استفاده شود. جملات هر
    سطر هم ترتیب خاصی ندارد و ممکن است به هر ترتیبی وارد شوند.
    (چند جمله اي خروجی ترتیب خاصی ندارد ولی مرتب کردن آن شامل نمره اضافه می شود)
    1: کسی این برنامه رو نوشته شده نداره یا یه چیزی شبیه این که بشه تغیراتی داد و به این رسید ؟
    2: از دوستان استاد خواهش میکنم در مورد شروع کار بهم کمک کنید تا بنویسم!
    3: استادان خسته شما اگه لطف کنید و بنویسید چقدر میشه؟

    Last edited by amir-shakh; 12-01-2010 at 12:53.

  2. #2
    داره خودمونی میشه Arman_BM's Avatar
    تاريخ عضويت
    Jan 2006
    محل سكونت
    تهران
    پست ها
    121

    پيش فرض

    دوست من این که کاری نداره یه همت میخواد بشین بنویس!
    الان موقع امتحانات و تحویل پروژه هاست! الان وقت همه کمه!
    من که پروژه خودم رو هنوز ننوشتم.

    فقظ محض همکاری یه چند تا موضوع رو بهت بگم.:
    فکر کنم خودت بدونی که اجباری در استفاده از لیست پیوندی نیست. با آرایه هم خیلی راحت میشه حلش کرد.
    یکبار تا آخرش میری و ماکسیمم درجه رو پیدا میکنی و ضریبش رو تو خونه ی اول و توانش رو تو خونه ی بعدی میزاری.
    یعنی آرایت دوتا دوتا هست ، اولی ضریب دومی توان.
    بعد از اینکه این عمل ذخیره رو انجام دادی با حلقه ی تو در تو جملات رو تو یک آرایه ی جدید بنویس.

    اگرم مجبوری از لیست پیوندی استفاده کنی باز فرق خاصی نمیکنه. قسمت value در لیست پیوندیت رو دوقسمتی بکن یکیش میشه ضریب یکی دیگش توان.

    موفق و برنامه نویس باشی!
    یا حق

  3. این کاربر از Arman_BM بخاطر این مطلب مفید تشکر کرده است


  4. #3
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    424

    پيش فرض

    سلام آرمان جان
    من الان ترم 1 کارشناسیم
    و 2 سال میگذره که C کار نکردم میخواستم ببینم اگه این برنامه رو بنویسی چقدر میشه ؟
    مچکرم از راهنماییت

  5. #4
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    424

    پيش فرض

    #include<stdio.h>
    #include<malloc.h>
    struct polynode
    {
    float coeff;
    int exp;
    struct polynode *link;
    };

    void poly_append(struct polynode **,float,int);
    void display_poly(struct polynode *);
    void poly_multiply(struct polynode *, struct polynode *, struct polynode **);
    void padd(float, int, struct polynode **);

    main()
    {
    struct polynode *first, *second, *mult;
    int i,coeff,exp,high;

    first = second = mult = NULL;

    printf("Enter the highest power of polynomial 1: \n");
    scanf("%d",&high);

    for(i=high;i>0;i--)
    {
    printf("Enter value for coeff for X^%d : ",i);
    scanf("%d",&coeff);

    poly_append(&first, coeff,i);
    }

    printf("\nEnter the highest power of polynomial 2: \n");
    scanf("%d",&high);

    for(i=high;i>0;i--)
    {
    printf("Enter value for coeff for X^%d : ",i);
    scanf("%d",&coeff);



    poly_append(&second, coeff,i);
    }

    printf("\n\n");
    display_poly(&first);
    printf("\n");
    display_poly(second);

    printf("\n");
    for(i=1;i<=79;i++)
    printf("-");

    poly_multiply(first, second, &mult);

    printf("\n");
    display_poly(mult);

    }

    /* adds a term to a polynomial */
    poly_append(struct polynode **q, float x, int y)
    {
    struct polynode *temp;
    temp = *q;

    /* create a new node if the list is empty */
    if(*q == NULL)
    {
    *q = malloc(sizeof(struct polynode));
    temp = *q;
    }
    else
    {
    /* traverse the entire linked list */
    while(temp -> link != NULL)
    temp = temp -> link;

    /* create new nodes at intermediate stages */

    temp -> link = malloc ( sizeof ( struct polynode ) ) ;
    temp = temp -> link;
    }


    /* assign coefficient and exponent */
    temp -> coeff = x;
    temp -> exp = y;
    temp -> link = NULL;
    }

    /* displays the contents of linked list representing a polynomial */
    display_poly(struct polynode *q)
    {
    /* traverse till the end of the linked list */
    while(q != NULL)
    {
    printf("%.1f x^%d : ", q -> coeff, q -> exp);
    q = q -> link;
    }


    printf("\b\b\b"); /* erases the last colon( */
    }

    /* multiplies the two polynomials */
    poly_multiply(struct polynode *x, struct polynode *y, struct polynode **m)

    {
    struct polynode *y1;
    float coeff1, exp1;

    y1 = y; /* point to the starting of the second linked list */

    if(x == NULL && y == NULL)
    return;

    /* if one of the list is empty */
    if(x == NULL)
    *m = y;
    else
    {
    if(y == NULL)
    *m = x;
    else /* if both linked lists exist */
    {
    /* for each term of the first list */
    while(x != NULL)
    {

    /* multiply each term of the second linked list with a
    term of the first linked list */
    while(y != NULL)
    {
    coeff1 = x -> coeff * y -> coeff;
    exp1 = x -> exp + y -> exp;
    y = y -> link;

    /* add the new term to the resultant polynomial */
    padd(coeff1, exp1, m);
    }


    y = y1; /* reposition the pointer to the starting of
    the second linked list */

    x = x -> link; /* go to the next node */
    }
    }
    }
    }

    /* adds a term to the polynomial in the descending order of the exponent */
    padd(float c, int e, struct polynode **s)
    {
    struct polynode *r, *temp = *s;

    /* if list is empty or if the node is to be inserted before the first node */
    if(*s == NULL || e > ( *s ) -> exp)
    {
    *s = r = malloc(sizeof(struct polynode));
    ( *s ) -> coeff = c;

    ( *s ) -> exp = e;
    ( *s ) -> link = temp;
    }
    else
    {
    /* traverse the entire linked list to search the position to insert a new node */
    while(temp != NULL)
    {
    if ( temp -> exp == e )
    {
    temp -> coeff += c;

    return;
    }

    if ( temp -> exp > e && ( temp -> link -> exp < e || temp -> link == NULL ) )
    {
    r = malloc ( sizeof ( struct polynode ) );
    r -> coeff = c;
    r -> exp = e;
    r -> link = temp -> link;
    temp -> link = r;
    return;
    }

    temp = temp -> link; /* go to next node */
    }

    r -> link = NULL;
    temp -> link = r;
    }
    }

  6. #5
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Oct 2007
    پست ها
    424

    پيش فرض

    موضوع برنامه : ضرب چند جمله ای
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    سلام دوباره دوستان این کد همون کد بالاس که مرتب کردم یه اشکالای داره ! میشه برای رفع اشکالش کمک کنید!

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •