实验二

实验任务4

Complex.hpp

#pragma once

#include <iostream>
#include <cmath>

using namespace std;

class Complex
{
public:
    Complex(double r=0,double i=0);
    Complex(const Complex &c);
    ~Complex()=default;
    
    double get_real() const; 
    double get_imag() const;
    void show() const;
    void add(Complex  const &c);
    
    friend Complex add(Complex c1, Complex c2);
    friend bool is_equal(Complex c1, Complex c2);
    friend double abs(Complex c); 
    
private:
    double real,imag;
    
};

Complex::Complex(double r,double i):real{r},imag{i}{
}
    
Complex::Complex(const Complex &c):real{c.real},imag{c.imag}{
} 


double Complex::get_real() const{
    return real;
}

double Complex::get_imag() const{
    return imag;
}

void Complex::show() const{
    if (real != 0 && imag != 0)
        cout << real << imag << " i " ;
    else if (real == 0 && imag != 0)
        cout << imag << " i " ;
    else if (real != 0 && imag == 0)
        cout << real ;
    else
        cout << "0" ;
}

void Complex::add(){
    real += c.real;
    imag += c.imag;
}

Complex add(Complex const &c1,Complex const &c2)
{
    Complex c3;
    c3.real = c1.real + c2.real;
    c3.imag = c1.imag + c2.imag;
    return c3;
}

bool is_equal(Complex c1, Complex c2)
{
    if (c1.real == c2.real && c1.imag == c2.imag)
        return true;
    else
        return false;
}

double abs(Complex c)
{
    return sqrt(c.real * c.real + c.imag * c.imag);
}

task 4

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

// 类测试
void test() {
    using namespace std;

    Complex c1(5, -12);
    const Complex c2(3.9);
    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();
}

 

实验任务5

User.hpp

#pragma once

#include<iostream>
#include<string>

using namespace std;

class User{
public:
    User(string nm, string pw = "111111", string em = "");
    ~User() = default;

    void set_email();
    void change_passwd();
    void print_info() const;
    void static print_n(){
        cout << "there are " << count << " users."<<endl;
    };

private:
    string name, passwd, email;
    static int n;
};

int User::n = 0;

User::User(string nm,string pw,string em)
{
    name = nm;
    passwd = pw;
    email = em;
    n++;
}

void User::set_email()
{
    cout << "Enter email address: ";
    cin >> email;
    cout << "email is set successfully..." << endl;
}

void User::change_passwd()
{
    string old_passwd;
    int count = 0;
    cout << "Enter old password: ";
    while (count != 3)
    {
        cin >> old_passwd;
        
        if (old_passwd==passwd)
        {
            cout << "Enter new passwd: ";
            cin >> passwd;
            cout << "new passwd is set successfully..." << endl;
            break;
        }
        else
        {
            count++;
            if (count != 3)
                cout << "password input error.Please re-enter again: ";
            else
                cout << "password input error.Please try after a while." << endl;
        }
    }
    
}

void User::print_info() const
{
    cout << "name: " << name << endl
    cout << "passwd: ";
    itn len = passwd.length();
    cout << string s1{len, '*'}; << endl;
    cout << "email: " << email << endl;
}

 

task 5

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

// 测试User类
void test()
{
    using std::cout;
    using std::endl;

    cout << "testing 1......\n";
    User user1("Cedric", "030317", "abc@hotmail.com");
    user1.print_info();

    cout << endl
         << "testing 2......\n\n";

    User user2("Aron");
    user2.change_passwd();
    user2.set_email();
    user2.print_info();

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

int main()
{
    test();
}

 

posted @ 2022-10-17 21:42  帽子戏法cyt  阅读(18)  评论(0)    收藏  举报