yy-L886

导航

实验二 类和对象(二)

 1 #include <iostream>
 2 #include <complex>
 3 int main()
 4 {
 5     using namespace std;
 6     complex<double> c1{3, 4}, c2{4.5};
 7 const complex<double> c3{c2};
 8 cout << "c1 = " << c1 << endl;
 9 cout << "c2 = " << c2 << endl;
10 cout << "c3 = " << c3 << endl;
11 cout << "c3.real = " << c3.real() << endl;
12 cout << "c3.imag = " << c3.imag() << endl;
13 cout << "c1 + c2 = " << c1 + c2 << endl;
14 cout << "c1 - c2 = " << c1 - c2 << endl;
15 cout << "abs(c1) = " << abs(c1) << endl;
16 cout << boolalpha;
17 cout << "c1 == c2 : " << (c1 == c2) << endl;
18 cout << "c3 == c2 : " << (c3 == c2) << endl;
19 complex<double> c4 = 2;
20 cout << "c4 = " << c4 << endl;
21 c4 += c1;
22 cout << "c4 = " << c4 << endl;
23 }

试验任务一截图

 

 

 1 #include <iostream>
 2 #include <array>
 3 template<typename T>
 4 void output1(const T &obj) {
 5 for(auto i: obj)
 6 std::cout << i << ", ";
 7 std::cout << "\b\b \n";
 8 }
 9 template<typename T>
10 void output2(const T &obj) {
11 for(auto p = obj.cbegin(); p != obj.cend(); ++p)
12 std::cout << *p << ", ";
13 std::cout << "\b\b \n";
14 }
15 int main() {
16 using namespace std;
17 array<int, 5> x1;
18 cout << "x1.size() = " << x1.size() << endl;
19 x1.fill(42); 
20 x1.at(0) = 999; 
21 x1.at(4) = -999; 
22 x1[1] = 777; 
23 cout << "x1: ";
24 output1(x1);
25 cout << "x1: ";
26 output2(x1);
27 array<double, 10> x2{1.5, 2.2}; 
28 cout << "x2.size() = " << x2.size() << endl;
29 cout << "x2: ";
30 output1(x2);
31 array<int, 5> x3{x1};
32 cout << boolalpha << (x1 == x3) << endl;
33 x3.fill(22);
34 cout << "x3: ";
35 output1(x3);
36 swap(x1, x3); 
37 cout << "x1: ";
38 output1(x1);
39 cout << "x3: ";
40 output1(x3);
41 }

实验任务二截图

 

 实验任务四

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

using namespace std;

class Complex{

public:
        
    Complex (double x = 0, double y = 0) : real{x}, imag{y} {}
    Complex (const Complex &obj) : real{obj.real} , imag{obj.imag} {}
    
    double get_real() const { return real; }
    double get_imag() const { return imag; }
    
    void show() const {
        cout << real;
        if(imag > 0)
            cout << " + " << imag << "i";
        else if(imag < 0)
            cout << " - " << -imag << "i";
    }
    
    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){
        return fabs(a.real - b.real) <= 1e-5 && fabs(a.imag - b.imag) <= 1e-5;
    }

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

private:
    double real, imag;
};
 1 #include<iostream>
 2 #include<math.h>
 3 
 4 using namespace std;
 5 
 6 class Complex{
 7 
 8 public:
 9         
10     Complex (double x = 0, double y = 0) : real{x}, imag{y} {}
11     Complex (const Complex &obj) : real{obj.real} , imag{obj.imag} {}
12     
13     double get_real() const { return real; }
14     double get_imag() const { return imag; }
15     
16     void show() const {
17         cout << real;
18         if(imag > 0)
19             cout << " + " << imag << "i";
20         else if(imag < 0)
21             cout << " - " << -imag << "i";
22     }
23     
24     void add(const Complex &obj){
25         real += obj.get_real();
26         imag += obj.get_imag();
27     }
28 
29     friend Complex add(const Complex &a, const Complex &b){
30         return Complex(a.real + b.real, a.imag + b.imag);
31     }
32 
33     friend bool is_equal(const Complex &a, const Complex &b){
34         return fabs(a.real - b.real) <= 1e-5 && fabs(a.imag - b.imag) <= 1e-5;
35     }
36 
37     
38     friend double abs(const Complex &obj){
39         return sqrt(obj.real * obj.real + obj.imag * obj.imag);
40     }
41 
42 private:
43     double real, imag;
44 };

截图

 

 更换数组后的结果

 

 实验任务五

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 class User{
 6 
 7 public:
 8     
 9     User (string Name, string Passwd = "111111", string Email = "") 
10         : name{Name} , passwd{Passwd}, email{Email} {n ++; }
11         
12     void set_email(){
13         cout << ("Enter email address: ");
14         cin >> email;
15         puts("email is set successfully...");
16     }
17     
18     void change_passwd(){
19         
20         string Passwd;
21         
22         cout << ("Enter old password: ");
23         cin >> Passwd;
24         
25         for(int wrong = 1; wrong <= 2 && Passwd != passwd; wrong ++){
26             cout <<("password input error. Please re-enter again: ");
27             cin >> Passwd;
28         }
29         
30         if(Passwd == passwd){
31             cout << "Enter new passwd: ";
32             cin >> passwd;
33             puts("new passwd is set successfully...");
34         }
35         else
36             puts("password input error. Please try after a while.");
37     
38     }
39     
40     void print_info(){
41         cout << "name:   " << name << "\n";
42         cout <<"passwd: ";
43         
44         for(int i = 0; passwd[i]; i ++)
45             cout << "*";
46         cout << "\n";
47         cout << "email:  " << email << "\n";
48     }
49     
50     static void print_n(){
51         cout << "there are " << n << " users.\n";
52     }
53     
54 private:
55     string name, passwd, email;
56     static int n;
57 }; 
58 
59 int User::n = 0;
 1 #include<iostream>
 2 #include"User.hpp"
 3 
 4 void test(){
 5     
 6     
 7     using std::cout;
 8     using std::endl;
 9     
10     cout << "testing 1......\n";
11     
12     User user1("Jonny", "92197", "xyz@hotmail.com");
13     user1.print_info();
14     
15     cout << endl << "testing 2......\n\n";
16     
17     User user2("Leonard");
18     user2.change_passwd();
19     user2.set_email();
20     user2.print_info();
21     
22     cout << endl;
23     User::print_n();
24     
25     
26 }
27 
28 int main(){
29     test();

 


 

 


 在更换一组信息过后

 

 


posted on 2022-10-18 17:48  小猪葛屁了  阅读(20)  评论(0编辑  收藏  举报