Given the code below, how would you create/implement SR.h so that it produces the correct output WITHOUT any asterisks in your solution?
I got bummed by this question. I would like to know some of the different approaches that people use for this problem.
#include <cstdio> #include "SR.h" int main() { int j = 5; int a[] = {10, 15}; { SR x(j), y(a[0]), z(a[1]); j = a[0]; a[0] = a[1]; a[1] = j; printf("j = %d, a = {%d, %d}\n", j, a[0], a[1]); } printf("j = %d, a = {%d, %d}\n", j, a[0], a[1]); }
Output:
j = 10, a = {15, 10} j = 5, a = {10, 15}
Second one:
#include <cstdio> #include "SR.h" int main() { int sum = 0; for (int i = 1; i < 100; i++) { SR ii(i); while (i--) sum += i; } printf("sum = %d\n", sum); } //The output is "sum = 161700".
Important programming languages for TCS campus interviews are 1) C programming, 2) C++ programming, and 3) Java programming. 2) What is the primary difference between C and Java?
SR is acting as a captured-variable-restorer. When it goes out of scope it restores some value that it previously captured.
The constructor will do two things: capture a reference, and capture the value of that reference. The destructor will restore the original value to that reference.
class SR { public: SR(int& var) : capture(var), value(var) {} ~SR() { capture = value; } private: int& capture; int value; };
Edit: Just a guess, but I assume SR is supposed to stand for ScopeRestorer?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With