Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: [ Solved ]Sử dụng DSLK đơn để cài đặt đa thức. Mong các bạn chỉ gium. cám ơn

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    2

    Mặc định [ Solved ]Sử dụng DSLK đơn để cài đặt đa thức. Mong các bạn chỉ gium. cám ơn

    các bạn có thể làm giùm mình một bài về cách cài đặt đa thức bằng DSLK đơn. trong đó x là biến ta cho x ta sẽ thu được y và in y ra màn hình, những số mủ trùng nhau ta cộng lại. mong các bạn chỉ giùm mình một bài mẩu này. chân thành cám ơn.

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Bạn tham khảo code này xem nhé,bài này làm hồi mình mò mẫm cái dslk nên cũng chưa hay lắm.
    PHP Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    struct dathuc 
    {
        
    int heso;
        
    int mu;
        
    dathuc *next,*prev;
    };

    struct data 
    {
        
    int heso;
        
    int mu;
                };
    void makenull(dathuc**l,dathuc**r)
    {
        (*
    l)=NULL;
        (*
    r)=NULL;
    }
    void menu()
    {
        
    printf("\n\n1.Nhap mot da thuc\n2.Rut gon\n3.Hien thi da thu\n4.Nhap da thuc hai va tinh toan\n5.thoat\n");
    }
    void nhap(data *x)
    {
        
    printf("\nnhap he so:\n");
        
    scanf("%d",&x->heso);
        
    printf("nhap so mu: \n");
        
    scanf("%d",&x->mu);
    }
    void nhapdt(dathuc**l,dathuc**r,data x)
    {    
    dathuc *p;

        
    p=new dathuc;// cap phat 1 nut moi
        
    p->hesox.heso;
        
    p->mu=x.mu;
        
    p->next=NULL;
        if((*
    r)==NULL)
        {
            
    p->prev=NULL;
            (*
    l)=p;(*r)=p;
        }
        else
        {
            (*
    r)->next=p;
            
    p->prev=(*r);
            (*
    r)=p;
        }
    }
    void hienthidathuc **l,dathuc**r)
    {
        
    dathuc *p;
        if((*
    l)==NULLprintf("\nChua nhap da thuc\n");
        else
        {
        
    printf("\n");
        
    p=(*l);// dat p vao phan tu dau tien
        
    while(p->next!=NULL)
        {
            
    printf("%dX^%d + ",p->heso,p->mu);
            
    p=p->next;
        }
        if(
    p->mu==0printf("%d\n\n",p->heso);
        else
        
    printf("%dX^%d\n\n",p->heso,p->mu);
        }

    }
    void sapxep(dathuc**l,dathuc**r)
    {
            
    dathuc *p,*q;data tg;
            
    p=(*l);
            while(
    p->next!=NULL)
            {
            
    q=p->next;
            while(
    q!=NULL)
            {

                if(
    p->mu<q->mu)
                {
                    
    tg.heso=p->heso;
                    
    tg.mu=p->mu;
                    
    p->heso=q->heso;
                    
    p->mu=q->mu;
                    
    q->heso=tg.heso;
                    
    q->mu=tg.mu;
                }
                
    q=q->next;

            }
            
    p=p->next;
            }
               while((*
    l)->heso==0) (*l)=(*l)->next;
               
    p=(*l);
               while(
    p!=NULL)
               {
               if(
    p->heso==0)
               {
               (
    p->prev)->next=p->next;
               (
    p->next)->prev=p->prev;
               }
               
    p=p->next;
               }

    }
    void rutgon(dathuc**l,dathuc**r)
    {
        
    dathuc*p,*q;

        if((*
    l)==NULLprintf("\nChua nhap da thuc\n");
        else
        {
            
    p=(*l);
            while(
    p->next!=NULL)
            {
            
    q=p->next;
            while(
    q!=NULL)
            {

                if(
    p->mu==q->mu)
                {
                    
    p->heso=p->heso+q->heso;
                    (
    q->prev)->next=q->next;
                    (
    q->next)->prev=q->prev;
                }
                    
    q=q->next;

            }
            
    p=p->next;
            }
        }
        
    sapxep(l,r);
    }
    void tinh(dathuc**l,dathuc**r)
    {
        
    data x;dathuc *m,*n;
        
    dathuc*p,*q,*s,*g,*h;
        if((*
    r)==NULL)
        {
            
    printf("\nBan chua nhap da thuc thu nhat\n");
            
    menu();
        }
        else
        {
        
    printf("\nHay nhap da thuc thu hai\n");
        
    char ch;makenull(&m,&n);
        do {
            
    nhap(&x);
            
    nhapdt(&m,&n,x);
            
    printf("\nBan co muon nhap tiep khong('c' hoac'C')");
            
    ch=getch();
            }
        while((
    ch=='c')||(ch=='C'));
        
    rutgon(&m,&n);
        
    hienthi(&m,&n);
        
    printf("\nBAN HAY CHON PHEP TINH\n1.Cong hai da thuc\n2.Tru hai da thuc\n3.Nhan hai da thuc\n4.Chia da thuc thu nhat cho da thuc thu hai\n");
        switch(
    getch())
        {
        case
    '1':
        (*
    r)->next=m;
        
    m->prev=(*r);
        (*
    r)=n;
        
    rutgon(l,r);
        
    printf("\nKet qua la:");
        
    hienthi(l,r);break;
        case
    '2':
        
    q=m;
        while(
    q!=NULL)
        {
        
    q->heso=-(q->heso);
        
    q=q->next;
        }
        (*
    r)->next=m;
        
    m->prev=(*r);
        (*
    r)=n;
        
    rutgon(l,r);
        
    printf("\nKet qua la:");
        
    hienthi(l,r);
        break;
        case
    '3':
        
    p=(*l);
        
    makenull(&g,&h);
        while(
    p!=NULL)
        {
            
    q=m;
            while(
    q!=NULL)
            {
            
    s=new dathuc;// cap phat 1 nut moi
            
    s->hesop->heso*q->heso;
            
    s->mu=p->mu+q->mu;
            
    s->next=NULL;
            if(
    h==NULL)
            {
                
    s->prev=NULL;
                
    g=s;h=s;
            }
            else
            {
                
    h->next=s;
                
    s->prev=h;
                
    h=s;
            }
            
    q=q->next;
            }
            
    p=p->next;
        }
        
    rutgon(&g,&h);
        
    printf("\nKet qua la:");
        
    hienthi(&g,&h);
        break;
        case
    '4':
        if(((*
    l)->mu<m->mu)||((*l)->heso<m->heso)) printf("\nKHONG CHIA DUOC\n");
        else
        {
            
    x.heso=(*l)->heso/m->heso;x.mu=(*l)->mu-m->mu;
            
    q=m;
            while(
    q!=NULL)
            {
            
    q->heso=-(q->heso*x.heso);
            
    q->mu+=x.mu;
            
    q=q->next;
            }
        (*
    r)->next=m;
        
    m->prev=(*r);
        (*
    r)=n;
        
    rutgon(l,r);
        if(
    x.mu==0)
        {
        
    printf("\nKet qua la: %d       \nDu la:    ",x.heso);
        
    hienthi(l,r);
        }
        
    printf("\nKet qua la: %dX^%d   \nDu la:    ",x.heso,x.mu);
        
    hienthi(l,r);
        }
        break;
        }
        }
    }
    void main()
    {
    //    clrscr();
        
    char ch;
        
    dathuc*l,*r;data x;
        
    makenull(&l,&r);

        do {
            
    menu();
            switch(
    getch())
            {
            case
    '1':do
            {
            
    nhap(&x);
            
    nhapdt(&l,&r,x);
            
    printf("\nBan co muon nhap tiep khong('c' hoac'C')");
            
    ch=getch();
            }
            while((
    ch=='c')||(ch=='C'));break;
            case
    '2':rutgon(&l,&r);break;
            case
    '3':hienthi(&l,&r);break;
            case
    '4':tinh(&l,&r);break;
            case
    '5':ch=1;break;
            }
        }
        while (
    ch!=1);



    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    2

    như thế này là cũng tuyệt lắm rồi. cám ơn bạn nhiều lắm. Nhưng mình không thấy cái hàm nhập vào giá trị của biến X và tính giá trị của đa thức bằng bao nhiêu. bạn giúp mình phần này nửa nhe.thank
    Đã được chỉnh sửa lần cuối bởi laptrinhvien_1988 : 09-10-2008 lúc 12:04 PM.

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Cái ấy dễ thôi mà bạn,việc nhập x thì đâu có khó khăn gì.
    Còn việc tính Y có thể làm như sau :
    PHP Code:
    float y=0;
    while(
    p->next!=null)
    {
        
    Y+=p->heso*pow(x,p->mu);
        
    p=p->next;

    Bạn cố gắng thử làm xem.Have fun
    Cánh Chym ứ mỏi

Các đề tài tương tự

  1. Gấp!!!Mong được giúp đở về vấn đề về tách DSLK Đơn
    Gửi bởi ndp1007 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 20-12-2011, 02:18 PM
  2. tính số chữ số của n giai thừa gium!
    Gửi bởi khanhsk trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 18
    Bài viết cuối: 07-07-2010, 10:41 PM
  3. [ Solved ]Mình mới nhập môn có 1 bài vướng mắc, mong các bạn giúp đỡ
    Gửi bởi kaisen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 24-09-2008, 03:04 PM
  4. [Solved]Mình có 1 đoạn code nhưng không hiểu ý nghĩa của nó. Mong các bạn chỉ giáo!
    Gửi bởi alias_va trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 29-11-2007, 05:10 PM
  5. nho cac bac chi gium tui sai o dau???
    Gửi bởi x2831987 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 21-06-2007, 06:05 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn