SoPhuc

/*Cho tệp văn bản 'sophuc.txt' chứa phần thực và phần ảo của n số phức. Tính tổng của n số phức. 
Đưa các số phức ra màn hình ở dạng a + jb. Yêu cầu sử dụng toán tử xuất << để đưa số phức ra màn hình; 
sử dụng toán tử + để cộng hai số phức; số phức được tự động khởi tạo phần thực và phần ảo bằng 0; 
sử dụng mảng động để chứa n số phức*/

#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

//khai bao lop doi tuong so phuc
class SoPhuc
{
    private:
        float a, b;
    
    public:
        SoPhuc();
        void thietLapAB(float a, float b);
        SoPhuc operator+(SoPhuc &sp);

        //ham ban
        friend ostream& operator<<(ostream &cout, SoPhuc &p);
};

//===chuong trinh chinh
int main ()
{
    //khai bao bien;
    int n;
    float a, b;
    
    //tao doi tuong doc tep
    ifstream fin("sophuc.txt");
    
    //dem so luong so phuc
    fin>>n;
    
    //tao doi tuong so phuc;
    SoPhuc *sp = new SoPhuc[n];
    SoPhuc tong;
    for(int i=0 ; i<n ; i++)
    {
        fin >> a >> b;
        sp[i].thietLapAB(a,b);
        // //tinh tong n so phuc
        tong = tong + sp[i];
    }
    
    cout<<"Chuong trinh tinh tong n so phuc tu tep.\n\n";
    
    //dua ra man hinh
    for(int i=0 ; i<n ; i++)
    {
        printf("\nSo phuc thu %d la: ", i+1); cout<<sp[i];
    }
    printf("\nTong %d so phuc tren la: ", n); cout<<tong;
    
    return 0;
}
//===dinh nghia ham===
SoPhuc::SoPhuc():a(0), b(0)
{
    
}

 void SoPhuc::thietLapAB(float a, float b)
 {
     this->a = a;
     this->b = b;
 }

SoPhuc SoPhuc::operator+(SoPhuc &sp)
{
    SoPhuc tg;
    
    tg.a = a + sp.a;
    tg.b = b + sp.b;
    
    return tg;
}

//ham ban
ostream& operator<<(ostream &cout, SoPhuc &p)
{
    if(p.b>=0) cout<<p.a<<" + j"<< p.b;
    else cout<<p.a<<" - j"<< -p.b;
    
    return cout;
}


Last updated