using System.Collections.Generic;
public enum AccType{Current, Solving};
public enum OpType{Withdrawal, Refill};
public static void Main()
Acc obj = new Acc((decimal)576.448, (AccType)0);
private static int guid = 0;
private Queue<BankTransaction> transactions = null;
public Acc(decimal balance)
this.transactions = new Queue<BankTransaction>();
public Acc(AccType accType)
this.transactions = new Queue<BankTransaction>();
public Acc(decimal balance, AccType accType)
this.transactions = new Queue<BankTransaction>();
Console.WriteLine("Id = {0};\nBalance = {1}\nAcc type = {2}\n", this.id, this.balance, this.accType);
public void ShowTransactions()
Console.WriteLine("\nTransactions:\n{");
foreach(BankTransaction trans in transactions)
Console.WriteLine("\tOperation: {0};\tSum: {1};\tTime: {2}\n", trans.operation, trans.sum, trans.t);
Console.WriteLine("}\n");
public void getCash(decimal sum)
Console.WriteLine("You geted {0}$ cash. Current balance is {1}", sum, this.balance);
transactions.Enqueue(new BankTransaction(sum, (OpType)0));
Console.WriteLine("You requested {0}$ cash. But your balance less than requsted sum. Balance is {1}", sum, this.balance);
public void pushCash(decimal sum)
Console.WriteLine("You replenished {0}$ cash. Current balance is {1}", sum, this.balance);
transactions.Enqueue(new BankTransaction(sum, (OpType)1));
public class BankTransaction
public readonly DateTime t;
public readonly decimal sum;
public readonly OpType operation;
public BankTransaction(decimal sum, OpType op)