Information Technology VietNam

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

2 posters

    Tổng hai đa thức

    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Tổng hai đa thức Empty Tổng hai đa thức

    Bài gửi by Vy Thanh Định 5/10/2009, 15:01

    Code:
    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    struct dathuc
    {
            int heso,somu;
            dathuc()
            {
              heso=0;
              somu=0;
            }           
    };

    void Nhapdathuc(dathuc[],int*);//Da thuc bac n;
    void Xuatdathuc(dathuc[],int);

    void cong(dathuc dt1[],int ,dathuc dt2[],int ,dathuc dt3[]);
    //cong 2 da thuc:
    //Da thuc 1: bac n;
    //Da thuc 2: bac m
    //tao thanh Da thuc 3, bac=max(n,m);
    void Giaodien()
    {
        dathuc dathuc1[100],dathuc2[100],dathuc3[100];
        int bacdt1=0,bacdt2=0;
        int max=0;
        printf("Nhap du lieu cho da thuc 1:\n");
        Nhapdathuc(dathuc1,&bacdt1);
        Xuatdathuc(dathuc1,bacdt1);
        printf("\nNhap du lieu cho da thuc 2:\n");
        Nhapdathuc(dathuc2,&bacdt2);
        Xuatdathuc(dathuc2,bacdt2);
        cong(dathuc1,bacdt1,dathuc2,bacdt2,dathuc3);
       
        max=bacdt1>bacdt2?bacdt1:bacdt2;
        printf("\n\nDa thuc tong: ");
        Xuatdathuc(dathuc3,max);
    }
    int main()
    {
        Giaodien();
       
        getch();
        return 0;
    }
    void Nhapdathuc(dathuc dt[100],int* n)
    {
        printf("Nhap vao bac cua da thuc: ");
        scanf("%d",&*n);
       
        for(int i=*n;i>=0;i--)
        {
            if(i)//if(i!=0)---Neu i khong phai la he so tu do
            {
                  printf("Nhap vao he so ung voi x^%d: ",i);
                  scanf("%d",&dt[i].heso);
                  dt[i].somu=i;
            }
            else
            {
                printf("Nhap vao he so tu do: ");
                scanf("%d",&dt[i].heso);
            }
     
        }
    }
    void Xuatdathuc(dathuc poly[100],int n)
    {
       
       
        printf("\n");
        printf("P(x)=");
                       
          if(n>1)
          {
                for(int i=n;i>=0;i--)
                {
       
                    if(i>1)
                    {
                      if(i!=n)
                      {
                          if(poly[i].heso>0)
                          {
                              if(poly[i].heso!=1)
                              {
                                  printf(" + %dx^%d",poly[i].heso,poly[i].somu);             
                              }
                              else
                                  printf(" + x^%d",poly[i].somu);             
                          }
                          else if(poly[i].heso<0)
                                {
                                    if(poly[i].heso!=-1)
                                    {
                                        printf("%dx^%d",poly[i].heso,poly[i].somu);             
                                    }
                                    else
                                        printf("x^%d",poly[i].somu); 
                                } 
                      }
                      else
                      {
                          if(poly[i].heso>0)
                          {
                              if(poly[i].heso!=1)
                              {
                                  printf("%dx^%d",poly[i].heso,poly[i].somu);             
                              }
                              else
                                  printf("x^%d",poly[i].somu);                           
                          }
                          else if(poly[i].heso!=-1)
                                {
                                  printf("%dx^%d",poly[i].heso,poly[i].somu);             
                                }
                                else
                                  printf(" - x^%d",poly[i].somu);                           
                           
                      }   
                         
                    }else if(i==1)
                          {
                              if(poly[i].heso>0)
                              {
                                    if(poly[i].heso!=1)
                                        printf(" + %dx",poly[i].heso);
                                    else
                                        printf(" + x");             
                              }
                              else if(poly[i].heso<0)
                                    {   
                                        if(poly[i].heso!=-1)
                                            printf(" - %dx",poly[i].heso);
                                        else
                                            printf(" - x");             
                                    }
                         
                          }
                          else//i=0
                          {
                              if(poly[i].heso)//Neu he so tu do khac 0
                                if(poly[i].heso>0)
                                    printf(" + %d",poly[i].heso);
                                else
                                    printf("%d",poly[i].heso);
                              //else-khong lam gi ca.
                          }
                    }           

          }
          else  if(n)
                {
                    for(int i=n;i>=0;i--)
                    {
                        if(i)
                        {
                            if(poly[i].heso>0)
                                if(poly[i].heso!=1)
                                    printf("%dx",poly[i].heso);
                                else
                                    printf("x");
                            else if(poly[i].heso<0)
                                {
                                    if(poly[i].heso!=-1)             
                                        printf("%dx",poly[i].heso);
                                    else
                                        printf(" - x");
                                }
                        }
                        else
                        {
                            if(poly[i].heso)//Neu he so tu do khac 0
                            {
                              if(poly[i].heso>0)
                                  printf(" + %d",poly[i].heso);
                              else
                                  printf("%d",poly[i].heso);
                            }
                        }   
                           
                    }
     
                }
                else//Da thuc bac 0. Vd: P(x)=3 (voi moi x);
                {
                    for(int i=n;i>=0;i--)     
                      if(poly[i].heso)     
                          printf("%d",poly[i].heso);
                }
    }
    void cong(dathuc dt1[100],int m,dathuc dt2[100],int n,dathuc dt3[100])
    {
        int max,min;
        max=m>n?m:n;
        min=m>n?n:m;
        if(max==m)
        { 
            int flag=0;
              for(int i=max;i>=0;i--)
              {
                for(int j=min;j>=0;j--)
                { 
                    if(dt1[i].somu==dt2[j].somu)
                    {
                        dt3[i].heso=dt1[i].heso+dt2[j].heso;
                        dt3[i].somu=i;
                        flag=1;
                        break;                           
                    }
     
                }
              if(!flag)
              {
                dt3[i].heso=dt1[i].heso;
                dt3[i].somu=i;
              }
           
            }           
        }
        else
        {
            int flag=0;
              for(int i=max;i>=0;i--)
              {
                for(int j=min;j>=0;j--)
                { 
                    if(dt2[i].somu==dt1[j].somu)
                    {
                        dt3[i].heso=dt2[i].heso+dt1[j].heso;
                        dt3[i].somu=i;
                        flag=1;
                        break;                           
                    }
     
                }
              if(!flag)
              {
                dt3[i].heso=dt2[i].heso;
                dt3[i].somu=i;
              }
           
            }   
           
        }

    }
    kocogi
    kocogi
    Member
    Member


    Giới tính : Nam Bài gửi : 22
    Tổng Điểm : 24
    Điểm Thưởng : 0
    Sinh Nhật : 18/03/1990 Bị Dụ Dỗ : 26/11/2009
    Tuổi : 34

    Tổng hai đa thức Empty Re: Tổng hai đa thức

    Bài gửi by kocogi 27/11/2009, 21:52

    viết gì dài thế đại ka. :O.
    Vy Thanh Định
    Vy Thanh Định
    Web Master
    Web Master


    Giới tính : Nam Bài gửi : 228
    Tổng Điểm : 544
    Điểm Thưởng : 16
    Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
    Tuổi : 34

    Tổng hai đa thức Empty Re: Tổng hai đa thức

    Bài gửi by Vy Thanh Định 4/12/2009, 01:45

    bài này lâu rùi có làm lại một bài rùi mà Very Happy

    Sponsored content


    Tổng hai đa thức Empty Re: Tổng hai đa thức

    Bài gửi by Sponsored content


      Hôm nay: 25/11/2024, 15:30