实验二,类与对象

task.4

Complex.hpp

#include<iostream>
#include<math.h>

using namespace std;

class Complex{

public:
        
    Complex (float r = 0, float i = 0) : real{r}, imag{i} {}
    Complex (const Complex &obj) : real{obj.real} , imag{obj.imag} {}
    
    float get_real() const { return real; }
    float get_imag() const { return imag; }
    
    void show() const {
        if(imag > 0)
            cout << real<< " + " << imag << "i"<<endl;
         if(imag < 0)
            cout <<real<< " - " << -imag << "i"<<endl;
            if(imag==0)
            cout << real<<endl;
    }
    
    void add(const Complex &obj){
        real += obj.get_real();
        imag += obj.get_imag();
    }

    friend Complex add(const Complex &a, const Complex &b){
        return Complex(a.real + b.real, a.imag + b.imag);
    }

    friend bool is_equal(const Complex &a, const Complex &b){
       if(a.get_imag()==b.get_imag()&&a.get_real()==b.get_real())return true;
       else return false;
    }

    
    friend float abs(const Complex &obj){
        return sqrt(obj.real * obj.real + obj.imag * obj.imag);
    }

private:
    float real, imag;
};

 

 task4.cpp

#include<iostream>
#include"Complex.hpp"

void test(){
    using namespace std;
    
    Complex c1(1, 4);
    const Complex c2(2.34);
    Complex c3(c1);
    
    cout << "c1 = ";
    c1.show();
    cout << endl;
    
    cout << "c2 = ";
    c2.show();
    cout << endl;
    cout << "c2.imag = " << c2.get_imag() << endl;
    
    cout << "c3 = ";
    c3.show();
    cout << endl;
    
    cout << "abs(c1) = ";
    cout << abs(c1) << endl;
    
    cout << boolalpha;
    cout << "c1 == c3 : " << is_equal(c1, c3) << endl;
    cout << "c1 == c2 : " << is_equal(c1, c2) << endl;
    
    Complex c4;
    c4 = add(c1, c2);
    cout << "c4 = c1 + c2 = ";
    c4.show();
    cout << endl;
    
    c1.add(c2);
    cout << "c1 += c2, " << "c1 = ";
    c1.show();
    cout << endl;
    
} 

int main(){
    test();
}

测试结果1

测试结果二

 

 

 

 

 

task.5

User.hpp

#include<iostream>
#include<string>

using namespace std;

class User{
    public:
        User(string n,string p="111111", string e="");
        void set_email(){
        cout<<"Enter email address:"<<endl;    
        cin>>email;
         cout << "email is set successfully..." << endl;
        }
        void change_passwd();
        void print_info()const;
        void static print_n(){
            cout<<"there are "<<n<<" users"<<endl;
        }
                private:
            string name,passwd,email;
            static int n;
    
    
}; 

User::User(string n1,string p,string e):name(n1),passwd(p),email(e){
n++;
}
int User::n=0;
void User::change_passwd(){
    cout<<"Enter old password:";
    string c;
    int count=1;
    cin>>c;
      while (c!=passwd&&count<3) {
        cout << "password input error.please re-enter again: ";
        cin >> passwd;
        count++;
        if (count == 3) {
            cout << "password input error.please try after a while." << endl;
        }
    } 
    
    if (count!=3) {
        cout << "enter new passwd: ";
        cin >> passwd;
        cout << "new passwd is set successfully..." << endl;
    }
}
    void User::print_info()const{
        int l=passwd.length();

        cout<<"name: "<<name<<endl;
        cout<<"password: ";
        while(l--){cout<<"*";
        }cout<<'\n';
        cout<<"email: "<<email<<endl;
    }

    

task5.cpp

#include "User.hpp"
#include <iostream>


void test() {
    using std::cout;
    using std::endl;

    cout << "testing 1......\n";
    User user1("lucy", "123456", "xyz@hotmail.com");
    user1.print_info();

    cout << endl
         << "testing 2......\n\n";
         
    User user2("Alice");
    user2.change_passwd();
    user2.set_email();
    user2.print_info();

    cout << endl;
    User::print_n();
}

int main() {
    test();
}

测试结果1

测试结果二

测试结果三

实验总结

 const用法不太熟悉

语句还不够精炼

 

posted @ 2022-10-12 22:19  akumanpower  阅读(58)  评论(0)    收藏  举报