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

Đề tài: [LT][Số học]Các thao tác trên Số phức

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    Mặc định [LT][Số học]Các thao tác trên Số phức

    CÁC thao tác trên số phức, dựa trên cấu trúc.
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<process.h>
    #include<math.h>
    #include<ctype.h>
    //++++++++++++++++++++++++++++++++++++++++++++++++++++
    typedef struct{
     float Thuc;
     float Ao;
    }Sophuc;
    Sophuc x,y,z;
    //****************************************************
    //====================================================
    void InSophuc(Sophuc x)
    {
            printf("%6.3f + %6.3f*j",x.Thuc,x.Ao);
    }//end function
    //=====================================================
    void Nhap(Sophuc &x)
    {
            float e,f;
            printf("==============\n");
            printf("Nhap phan thuc:");scanf("%f",&e);
            printf("\nNhap phan ao:");scanf("%f",&f);
            x.Thuc=e;
            x.Ao=f;
    }//end function
    //======================================================
    Sophuc Cong(Sophuc x,Sophuc y)
    {
            z.Thuc= x.Thuc + y.Thuc;
            z.Ao= x.Ao + y.Ao;
       return(z);
    }
    //==================================================
    Sophuc Tru(Sophuc x,Sophuc y)
    {
            z.Thuc = x.Thuc - y.Thuc;
            z.Ao = x.Ao - y.Ao;
       return(z);
    }
    //===================================================
    Sophuc Nhan(Sophuc x,Sophuc y)
    {
    
            z.Thuc = (x.Thuc)*(y.Thuc) -(x.Ao)*(y.Ao);
            z.Ao = (x.Thuc)*(y.Ao) + (x.Ao)*(y.Thuc);
      return(z);
    }//end function
    //===================================================
    Sophuc Thuong(Sophuc x,Sophuc y)
    {
    
             if(y.Thuc==0&&y.Ao==0)
              {printf("\nKhong the thuc hien  phep chia cho 0!"); exit(0);}
             else
             {
               float x1,y1,x2,y2;
                     x1=x.Thuc;y1=x.Ao;x2=y.Thuc;y2=y.Ao;
                     z.Thuc=(x1*x2+y1*y2)/(x2*x2+y2*y2);
                     z.Ao=(x2*y1-x1*y2)/(x2*x2+y2*y2);
             }
       return(z);
    }//End function
    //========================================================
    void CanBacHai(Sophuc x)
    {
    	   if(x.Ao == 0)
               {
                 if(x.Thuc<0)
                   {
                       z.Thuc=0;z.Ao=-sqrt(fabs(x.Thuc));
                       printf("\nNghiem la:") ;
                       InSophuc(z);
                       printf("\n Va:\n");
                       z.Ao=sqrt(fabs(x.Thuc));
                       InSophuc(z);
                   }  //end if 2
                 else
                   {
                       z.Ao = 0;z.Thuc = (-sqrt(fabs(x.Thuc)));
                       printf("\nNghiem la:");
                       InSophuc(z);
                       printf("\nVa:\n");
                       z.Thuc = (sqrt(fabs(x.Thuc)));
                   }  //end else of if 2
    	   }//end if 1
               else
                  {
                       float a,b,c,d;
                       a = x.Thuc; b = x.Ao;
                       c=-sqrt(2*a+2*sqrt(a*a+b*b));
                       d=b/(2*c);
                       z.Thuc=c;z.Ao=d;
                       printf("\nKet qua la:\n");
                       InSophuc(z);
                       c=sqrt(2*a+2*sqrt(a*a+b*b));
                       d=b/(2*c);
                       z.Thuc=c;z.Ao=d;
                       printf("\n\nVa:\n\n");
                       InSophuc(z);
    
                  }//end else of if 1
    }//End function
    //=====================================================
    void main()
    {
            clrscr();
            textmode(C80);
           textcolor(YELLOW);
           textbackground(BLUE);
           window(1,1,80,25);
    
              while(1)
       {clrscr();
    
            printf("\n Tap thao t*c voi Cau truc So_Phuc:") ;
            printf("\nÞÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝ");
            printf("\n\n Menu\nÈÍÍÍͼ");
    	printf("\n1. Tao lap hai So phuc X,Y");
    	printf("\n2. Tim Z=X+Y");
    	printf("\n3. Tim Z=X-Y");
            printf("\n4. Tim Z=X*Y");
            printf("\n5. Tim Z=X/Y");
            printf("\n6. Tinh ûX ,ûY");
    	//printf("\nz. Tro ve MENU ch¡nh");
            printf("\nz. Thoat");
    	printf("\n\nHay chon chuc nang 1 -> z: ");
          char  ch=toupper(getchar());
    	if(ch=='Z') break;
    	switch(ch)
    	 {
              case '1':
    
                   printf("Nhap so phuc X\n");
                   Nhap(x);
                   printf("\nNhap so phuc Y\n");
                   Nhap(y);
                   printf("\n===================\nX=");
                   InSophuc(x);
                   printf("\n\n");
                   printf("Y=");
                   InSophuc(y);
                   getch();
                   break ;
              case '2':
    
                   Cong(x,y);
                   printf("\n\n++++++++++++++++++++++++++++\n\nTong X+Y=");
                   InSophuc(z);
                    getch();
                    break;
    	  case '3':
    
                    Tru(x,y);
                    printf("\n\nHieu X-Y=");
                    InSophuc(z);
                    getch();
    	       break;
    	  case '4':
    
                    Nhan(x,y);
                    printf("\n\nTich X*Y=");
                    InSophuc(z);
                    getch();
                    break;
              case '5':
    
                    Thuong(x,y);
                    printf("\n\nThuong X/Y=");
                    InSophuc(z);
                    getch();
                    break;
              case '6':
    
                    printf("\n\n++++++++++++++++++++++++++\n\nTinh CanBacHai cua X:\nÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
                    CanBacHai(x);
                    printf("\n====================\n\nTinh CanBacHai cua Y:\nÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ");
                    CanBacHai(y);
                    getch();
                    break;
    	 }//End switch();
    	}// End while(1);
    }//End main
    Đã được chỉnh sửa lần cuối bởi PoPoPoPo : 09-10-2006 lúc 11:36 AM.

  2. #2
    Ngày gia nhập
    08 2006
    Bài viết
    59

    //================================================== =
    Sophuc Thuong(Sophuc x,Sophuc y)
    {

    if(y.Thuc==0&&x.Ao==0)
    {printf("\nKhong the thuc hien phep chia cho 0!"); exit(0);}
    else
    {
    float x1,y1,x2,y2;
    x1=x.Thuc;y1=x.Ao;x2=y.Thuc;y2=y.Ao;
    z.Thuc=(x1*x2+y1*y2)/(x2*x2+y2*y2);
    z.Ao=(x2*y1-x1*y2)/(x2*x2+y2*y2);
    }
    return(z);
    }//End function
    Nếu x2 và y2 đều là 0 thì phép chia cho (x2*x2+y2*y2) là phép chia cho 0 !!!

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    146

    Uh
    Cảm ơn!
    Mình bị nhầm đoạn :if(y.Thuc==0&&x.Ao==0)
    điều kiện phải là : if(y.Thuc==0&&y.Ao==0)
    mình đã sửa lại trong code phía trên!

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Số phức theo OOP:
    File comp.h
    Code:
    #ifndef comp_h
    #define comp_h
    #include <iostream>
    using namespace std;
    class comp
    {
          private: double re, im; //real, imaginary
          public:
                 //khoi tao
                 comp(double r = 0.,double i = 0.){re = r; im = i;}; //constructor
                 friend istream& operator>>(istream&,comp&);
                 //cung cap thong tin
                 friend ostream& operator<<(ostream&,comp&);
                 //cap nhat
                 //xu ly tinh toan
                 comp operator-(); //negative
                 comp operator+(comp);
                 comp operator-(comp);
                 comp operator*(comp);
                 comp operator/(comp);
                 comp operator+=(comp);
                 comp operator-=(comp);
                 comp operator*=(comp);
                 comp operator/=(comp);
                 //kiem tra rang buoc
    };
    #endif
    File comp.cpp
    Code:
    #include "comp.h"
    //khoi tao
    istream& operator>>(istream& cin,comp& x)
    {
             cout <<"Real     = "; cin >>x.re;
             cout <<"Imginary = "; cin >>x.im;
    }
    //cung cap thong tin
    ostream& operator<<(ostream& cout,comp& x)
    {
             cout <<x.re <<" + " <<x.im <<'i';
    }
    //xu ly tinh toan
    comp comp::operator-() //negative
    {
         return comp(-re,-im);
    }
    void comp::operator=( comp x) //assign
    {
         re = x.re;
         im = x.im;
    }
    comp comp::operator+(comp x)
    {
         return comp(re+x.re,im+x.im);
    }
    comp comp::operator-(comp x)
    {
         x = -x;
         return *this+x;
    }
    comp comp::operator*(comp x)
    {
         return comp(re*x.re - im*x.im,re*x.im + im*x.re);
    }
    comp comp::operator/(comp x)
    {
         if ((x.re == 0.) && (x.im ==0.))
            cout <<"Error: Divided by zero.\n";
         else return comp(re*x.re + im*x.im,im*x.re + re*x.im);
    }
    comp comp::operator+=(comp x)
    {
         re += x.re;
         im += x.im;
         return *this;
    }
    comp comp::operator-=(comp x)
    {
         x = -x;
         return *this+=x;
    }
    comp comp::operator*=(comp x)
    {
         double r = re;
         re = re*x.re - im*x.im;
         im = r*x.im + im*x.re;
         return *this;
    }
    comp comp::operator/=(comp x)
    {
         if ((x.re == 0.) && (x.im ==0.))
            cout <<"Error: Divided by zero.\n";
         else
         {
             double r = re;
             re = re*x.re + im*x.im;
             im = im*x.re + r*x.im;
             return *this;
         }
    }
    Có gì thiếu sót thì mong các bạn thêm vào, mình chỉ làm những cái cơ bản thôi, phần mở rộng xin dành cho các bạn thích tìm hiểu.

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

  1. undo/redo khi thao tác với CSDL trên Winform C# làm thế nào?
    Gửi bởi cchangkhongayngo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 08-11-2012, 11:04 PM
  2. Làm Chữ chạy trên form C# như thẻ <marquee> trong HTML thế nào?
    Gửi bởi magnet241 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 05-04-2012, 11:55 AM
  3. Trả lời: 30
    Bài viết cuối: 15-02-2012, 07:03 PM
  4. Lỗi gì đó liên quan tới DOS ảo trên win, không tìm thấy thông tin trên GOOGLE
    Gửi bởi longtth trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 20-12-2009, 12:03 AM
  5. Lưu dữ liệu để trống trên một cell của datagirdview trên csdl Access như thế nào?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 27-05-2009, 04:21 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