首页 > 其他分享 >实验2 类和对象

实验2 类和对象

时间:2023-10-22 21:13:55浏览次数:27  
标签:std const cout 对象 double int Complex 实验

实验任务3

t.hpp

#pragma once

#include <iostream> 
#include <cmath>


using namespace std;


class Complex{
public:
    Complex();
    Complex(double real0);
    Complex(double real0,double imag0);
    Complex(const Complex &x);
    
    double get_real()const {return real;}
    double get_imag()const {return imag;}
    void show()const;
    void add(const Complex &x);
    
    friend Complex add(Complex x1, Complex x2);
    friend bool is_equal(const Complex &x1,const Complex &x2

 

    friend double abs(const Complex &x);
    
private:
    double real,imag;
};

Complex::Complex(){
    real = 0;
    imag = 0;
}

Complex::Complex(double real0){
    real = real0;
    imag = 0;
}

Complex::Complex(double real0,double imag0) {
    real = real0;
    imag = imag0;
}

Complex::Complex(const Complex &x){
    real = x.real;
    imag = x.imag;
}


void Complex::show() const {
    
    using namespace std;
    if(real == 0 && imag == 0) {cout << 0;} 
    else if(real == 0){cout << imag << "i"; } 
    else if(imag == 0){cout << real;}
    else {
        if (imag > 0){
            cout << real << " + " << imag << "i" ;
    }
        else if(imag < 0) {
            cout << real << " - " << -imag << "i" ;
}
}
}

void Complex::add(const Complex &x){
    real = real+x.real;
    imag = imag+x.imag;
} 

Complex add(Complex x1, Complex x2) {
    double real,imag;
    x1.real = x1.real + x2.real;
    x2.imag = x1.imag + x2.imag;
    return x1;
}

bool is_equal(const Complex &x1, const Complex &x2) {
    bool real,imag;
    real = x1.real == x2.real;
    imag = x1.imag == x2.imag;
    return real && imag;
}
double abs(const Complex &x) {
    return sqrt(pow(x.real, 2) + pow(x.imag, 2));
}

main.cpp

#include "t.hpp"


void test(){
    using namespace std;
    
    Complex c1(3,-4);
    const Complex c2(4.5);
    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();
}

 

实验任务4

User.hpp

#pragma once
#include <iostream>
#include <string>

class User{
public:
    User(const std::string& name, const std::string& passwd = "111111", const std::string& email = ""):name_(name),passwd_(passwd),email_(email) {}
    
    std::string get_name() const { return name_; }
    std::string get_passwd() const { return passwd_; }
    std::string get_email() const { return email_; }
    
    static void print_n();
    
    void set_email() const{
        using namespace std;
        string email_;
        std::cout << "Enter email address:";
        cin >> email_;
        cout << "email is set successfully..." << endl;
    }
    
    void change_passwd()const {
        using namespace std;
        string mm;
        std::cout << "Enter old password:";
        cin >> mm;
        if(mm==passwd_) {
            cout << "Enter new passwd: oop_cplus_2023" << endl;
            cout << "new passwd is set successfully..." << endl;
        }
        else{
            int i;
            for(i = 0; i<3;i++){
    
            if(i <2 ) {
                std::cout << "password input error.Please re-enter again:" << std::endl;
            cin >> mm;
            continue;
            }
            else
            std::cout << "password input error.Please try after a while." << std::endl;
                return;
    }
    }
}
        
    void print_info()const {
        std::cout << "name:" << name_ << std::endl;
        std::cout << "passwd:";
        for (int i = 0; i < passwd_.size(); ++i){
            std::cout << "*";
        } 
        std::cout << std::endl;
        std::cout << "email:" << email_ << std::endl; 
    }
    

private:
    std::string name_;
    std::string passwd_;
    std::string email_;
    
};

using namespace std;
void User::print_n()
{
    cout << "there are " << 2 << " users." << endl;
}

 

task.cpp

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

void test(){
    using std::cout;
    using std::endl;
    
    cout << "testing 1......\n";
    User user1("Jonny","92197","[email protected]");
    user1.print_info();
    
    cout << endl
         << "testing 2......\n\n";
         
    User user2("Leonard");
    user2.print_info();
    user2.change_passwd();
    user2.set_email();
    cout << endl;
    user2.print_info();
    User::print_n();
}

int main(){
    test();
}

 

 

实验任务5

account.h

class SavingsAccount {
private:
    int id;
    double balance;
    double rate;
    int lastDate;
    double accumulation;
    static double total;
    
    void record(int date, double amount);
    double accumulate(int date) const {
        return accumulation+balance*(date-lastDate);
    }
public:
    SavingsAccount(int date, int id, double rate);
    int getId() const {return id;}
    double getBalance() const {return balance;}
    double getRate() const {return rate;}
    static double getTotal() {return total;}
    void deposit(int data, double amount);
    void withdraw(int data, double amount);
    void settle(int data);
    void show() const; 
};

 

account.cpp

#include "account.h"
#include <cmath>
#include <iostream>
using namespace std;

double SavingsAccount::total=0;
SavingsAccount::SavingsAccount(int date, int id, double rate): id(id), balance(0), rate(rate), lastDate(date), accumulation(0) {
    cout << date << "\t#" << id << "is created" << endl;
}
void SavingsAccount::record(int date, double amount) {
    accumulation = accumulate(date);
    lastDate = date;
    amount = floor(amount*100+0.5)/100;
    balance += amount;
    total += amount;
    cout << date << "\t#" << id << "\t" << amount << "\t" << balance << endl; 
}
void SavingsAccount::deposit(int date, double amount) {
    record(date, amount);
}
void SavingsAccount::withdraw(int date, double amount) {
    if(amount>getBalance())
      cout << "Error: not enough money" << endl;
    else
      record(date, -amount);
}
void SavingsAccount::settle(int date) {
    double interest = accumulate(date) * rate/365;
    if(interest != 0)
      record(date, interest);
    accumulation = 0;
}
void SavingsAccount::show() const {
    cout << "#" << id << "\tBalance: " << balance;
}

 

5_11.cpp

#include "account.h"
#include <iostream>
using namespace std;

int main() {
    SavingsAccount sa0(1, 21325302, 0.015);
    SavingsAccount sa1(1, 58320212, 0.015);
    
    sa0.deposit(5,5000);
    sa1.deposit(25,10000);
    sa0.deposit(45,5500);
    sa1.withdraw(60,4000);
    
    sa0.settle(90);
    sa1.settle(90);
    
    sa0.show(); cout << endl;
    sa1.show(); cout << endl;
    cout << "Total: " << SavingsAccount::getTotal() << endl;
    return 0;
}

 

标签:std,const,cout,对象,double,int,Complex,实验
From: https://www.cnblogs.com/yzsya/p/17776920.html

相关文章

  • 实验二 类与对象
    实验任务3complex.hpp#pragmaonce#include<iostream>#include<string>usingnamespacestd;classUser{public:User(std::stringname,std::stringpasswd="111111",std::stringemail=""):name{name},p......
  • 实验2 类和对象_基础编程2
    //第一个任务简单Complex类#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doublex0=0,doubley0=0);//构造函数Complex(constComplex&c);//拷贝构造函数~Complex(){};//析构函数doubleget_real()con......
  • 北京电子科技学院(BESTI)实验报告
    实验报告课程:计算机基础与程序设计班级:2314姓名:高伟光学号:20231404成绩:指导教师:娄佳鹏实验日期:2022.9.26实验密级:预习程度:部分预习实验时间:34节仪器组次:无必修/选修:必修实验序号:实验一实验名称:Li......
  • 实验二
    task.3.hpp#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doubler=0,doublei=0){real=r;imag=i;}Complex(constComplex&x){real=x.real;imag=x.imag;......
  • 实验二
    试验任务三complex.hpp点击查看代码#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doubler=0,doublei=0){real=r;imag=i;}Complex(constComplex&x){real=x.real;imag=x.i......
  • 实验2 类和对象_基础编程2
    1.实验任务3程序代码组织如下:•Complex.h类Complex的声明#pragmaonce#include<iostream>#include<cmath>classComplex{public:Complex(doubler=0,doublei=0);Complex(constComplex&c);~Complex(){};doubleget_real()cons......
  • 实验2 类与对象
     3.实验任务31#pragmaonce23#include<iostream>4#include<cmath>56classComplex{7public:8Complex(doubler=0,doublei=0):real(r),imag(i){}910doubleget_real()const{11returnreal;12}......
  • 实验2 类与对象
    实验一方式一t.h#ifndefT_H#defineT_H#include<iostream>#include<string>usingnamespacestd;classT{public:T(intx=0,inty=0);T(constT&t);T(T&&t);~T();voidset_m1(intx);intget_m1()const;intge......
  • 实验2 c语言分支与循环基础应用编程
    task11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN246589intmain()10{11intnumber;12inti;13srand(time(0));//以当前系统时间作为随机种子14for(i=0;i<N;......
  • [AHK2] 向对象原型添加属性和方法
    ahk和js十分相似,其中一点就是可以向本地对象添加自定义方法和属性。下面的脚本向ahk的字符串,数组添加了许多方法,添加之后在使用上就和js更加相似了。;Thisscriptisusedtoextendthemethodsoftheahknativeobjectprototype#RequiresAutoHotkeyv2.0#SingleInstan......