zoukankan      html  css  js  c++  java
  • 32

    #include <iostream>
    #include <cmath>
    using namespace std;

    class SavingsAccount {
    private:
    int id;
    double balance;
    double rate;
    int lastDate;
    double accumulation;

    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() { return id; }
    double getBalance() { return balance; }
    double getRate() { return rate; }

    void deposit(int date, double amount);
    void withdraw(int date, double amount);
    void settle(int date);
    void show();
    };

    SavingsAccount::SavingsAccount(int date, int id, double rate)
    : id(id), balance(0), rate(rate), lastDate(date), accumulation(0) {
    cout << date << " #" << 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;
    cout << date << " #" << id << " " << amount << " " << 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() {
    cout << "#" << id << " Balance: " << balance;
    }

    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;
    return 0;
    }

  • 相关阅读:
    <Graph> Topological + Undirected Graph 310 Union Find 261 + 323 + (hard)305
    <Topological Sort> ( 高频, hard) 269
    <Stack> (高频)394 ( 高频)224
    <DFS & BFS> 286 339 (BFS)364
    <Matrix> 311 378
    <Binary Search> 81 (高频)34 (很难hard, 高频)315 (hard)354
    <LinkedList> 369 (高)143 (第二遍)142 148
    <DP> (高频)139 375 374 (DP hard)312
    <BackTracking> permutation 254 47 60
    <Tree> 298 250 366 199(高频) 98(高频)
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/6640341.html
Copyright © 2011-2022 走看看