struct simple { int one; }; struct foo { int bar; bool cool; struct simple simp; }; struct foo globalfoo; fun tailrecursive(int num) void { if(num <= 0) { return; } tailrecursive(num-1); } fun add(int x, int y) int { return x + y; } fun domath(int num) void { struct foo math1; struct foo math2; int tmp; math1 = new foo; math1.simp = new simple; math2 = new foo; math2.simp = new simple; math1.bar = num; math2.bar = 3; math1.simp.one = math1.bar; math2.simp.one = math2.bar; while(num > 0) { tmp = math1.bar * math2.bar; tmp = (tmp * math1.simp.one) / math2.bar; tmp = add(math2.simp.one, math1.bar); tmp = math2.bar - math1.bar; num = num - 1; } delete math1; delete math2; } fun objinstantiation(int num) void { struct foo tmp; while(num > 0) { tmp = new foo; delete tmp; num = num - 1; } } fun ackermann(int m, int n) int { if(m==0) { return n+1; } if(n==0) { return ackermann(m-1, 1); } else { return ackermann(m-1, ackermann(m, n-1)); } } fun main() int { int a,b,c,d,e; a = read; b = read; c = read; d = read; e = read; tailrecursive(a); print a endl; domath(b); print b endl; objinstantiation(c); print c endl; print ackermann(d,e) endl; return 0; }