实验一

实验任务三

#ifndef COMPLEX_HPP
#define COMPLEX_HPP
#include <iostream>
#include<cmath>
using namespace std;
class Complex
{
    public:
        Complex():real(0),imag(0){
        }
        Complex(const float r,const float i=0):real(r),imag(i){}
        Complex(const Complex &p);
        ~Complex(){}
        double get_real()const
        {
            return real;
        }
        double get_imag()const
        {
            return imag;
        }
        void show()const;
        void add(const Complex &c);
        friend Complex add(const Complex &c1,const Complex &c2);
        friend bool is_equal(const Complex &c1,const Complex &c2);
        friend float abs(Complex &c);
    private:
        float real,imag;
};
Complex::Complex(const Complex &p)
{
    real=p.real;
    imag=p.imag;
} 
void Complex::show()const{
    if(imag>0) cout<<real<<"+"<<imag<<"i";
    else if(imag<0) cout<<real<<imag<<"i";
    else cout<<real;
}
void Complex::add(const Complex &c)
{
    real+=c.real;
    imag+c.imag;
}
Complex add(const Complex &c1,const Complex &c2)
{
    Complex c;
    c.real=c1.real+c2.real;
    c.imag=c1.imag+c2.imag;
    return c;
}
bool is_equal(const Complex &c1,const Complex &c2)
{
    if(c1.real==c2.real&&c1.imag==c2.imag)
    {
        return true;
    }
    else return false;
}
float abs(Complex &c)
{
    return sqrt(c.real*c.real+c.imag*c.imag);
}
#endif

#include "Complex.hpp"
#include <iostream>
int main()
{
    using namespace std;

    Complex c1(6, -3);
    const Complex c2(2.8);
    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;
}

 实验任务4

#ifndef USER_HPP
#define USER_HPP
#include<iostream>
#include<string>
using namespace std;
class User{
    public:
        User(string m,string s="222222",string l=""):name(m),passwd(s),email(l){
            ++n;
        }
        void set_email();
        void change_passwd();
        void print_info();
        static void print_n()
        {
            cout<<"there are "<<n<<" users."<<endl;
        }
    private:
        string name,passwd,email;
        static int n;
};
int User::n=0;
void User::set_email()
{
    cout<<"Enter email address:";
    cin>>email;
    cout<<"email is set successfully..."<<endl;
} 
void User::print_info()
{
    cout<<"name:   "<<name<<endl;
    cout<<"passwd: "<<"******"<<endl;
    cout<<"email:  "<<email<<endl;
}
void User::change_passwd() 
{
    string p;
    cout<<"Enter old password:";cin>>p;
    if(p==passwd)
    {
        cout<<"Enter new passwd:";cin>>passwd;
        cout<<"new passwd is set successfully..."<<endl;
    }
    else
    {
        int i=1;
        while(i<3)
        {
            cout<<"password input error."<<"Please re-enter again:";
            cin>>p;
            if(p==passwd)
            {
                cout<<"new passwd is set successfully..."<<endl;
                break;
            }
            i++;    
        }
        if(i>2)
        {
            cout<<"password input error.Please try after a while."<<endl;
        }
        
        
    }
    
}
#endif
#include "User.hpp"
#include <iostream>

int main()
{
    using namespace std;

    cout << "testing 1......" << endl;
    User user1("Hayward", "647326", "hwd@hotmail.com");
    user1.print_info();

    cout << endl
         << "testing 2......" << endl
         << endl;
    User user2("Curry");
    user2.change_passwd();
    user2.set_email();
    user2.print_info();

    User::print_n();
}

 

实验总结:

本次实验让我加深了对友元的理解,以及对于c++中字符串的输入以及定义有了新的认识,以及学到了字符串中的查找函数,学会了如何将头文件和源文件如何联系起来

posted @ 2021-10-22 20:37  姜振晖  阅读(31)  评论(4)    收藏  举报