Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tricky interview subject for C++

Tags:

c++

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". 
like image 201
aherlambang Avatar asked Mar 11 '10 20:03

aherlambang


People also ask

What are the C programs asked in TCS interview?

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?


1 Answers

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?

like image 111
Bill Avatar answered Oct 02 '22 20:10

Bill