-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdyn_stack.cpp
More file actions
78 lines (64 loc) · 1.24 KB
/
Copy pathdyn_stack.cpp
File metadata and controls
78 lines (64 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
using namespace std;
struct msg {
msg() {
prev = nullptr;
}
double currency_amt_usd;
double currency_amt_eur;
msg* prev;
};
msg* g_top(nullptr);
bool check_empty() {
return g_top == nullptr;
}
msg* create_msg() {
return new msg();
}
void init_msg(msg* msg_ptr) {
msg_ptr->currency_amt_usd = 60.0 + (rand () % 20) - 10;
msg_ptr->currency_amt_eur = 75.0 + (rand () % 20) - 10;
}
void push(msg* msg_ptr) {
if (!check_empty()) {
msg_ptr->prev = g_top;
}
g_top = msg_ptr;
}
msg* pop() {
msg* top = g_top;
g_top = g_top->prev;
return top;
}
void del(const msg* msg_ptr) {
delete msg_ptr;
}
void fill_stack(int n) {
for (int i = 0; i < n; ++i) {
msg* msg_ptr = create_msg();
init_msg(msg_ptr);
push(msg_ptr);
}
}
void output_stack() {
//TODO: read from top of stack
//TODO: print to stdout
//TODO: delete
int i = 1;
while (!check_empty()) {
msg* msg_ptr = pop();
cout << "Day " << i++ << endl;
cout << "USD = " << msg_ptr->currency_amt_usd << " RUB \n";
cout << "EUR = " << msg_ptr->currency_amt_eur << " RUB \n\n";
del(msg_ptr);
}
}
int main() {
srand(time(NULL));
int n; //number of days for currency analysis
cout << "Days for analysis: ";
cin >> n;
fill_stack(n);
output_stack();
return 0;
}