View difference between Paste ID: dKtJSiQJ and 2Q4r6v9v
SHOW: | | - or go back to the newest paste.
1
/*
2
It does not support combinations that start with one or more zeroes. For example, a combination of 0042 can be opened by entering just 42.
3
4
Solve this problem by choosing a different representation. Instead of an integer, use a string to hold the input.
5
*/
6
#include <iostream>
7
#include <string>
8
using namespace std;
9
10
/**
11
   A simulated lock with digit buttons.
12
*/
13
class Lock
14
{
15
public:
16
   /**
17
      Simulates a digit button push.
18
      @param button a digit 0 ... 9
19
   */
20
   void push(int button);
21
22
   /**
23
      Simulates a push of the open button.
24
      @return true if the lock opened
25
   */
26
   bool open();
27
private:
28
   string combination = "0042"; 
29
   string input;
30
};
31
32
void Lock::push(int button)
33
{
34
   string button_as_string = to_string(button);
35
   . . . 
36
}
37
38
bool Lock::open()
39
{
40
   . . .
41
}
42
43
int main()
44
{
45
   Lock my_lock;
46
   my_lock.push(4);
47
   my_lock.push(2);
48
   cout << boolalpha;
49
   cout << my_lock.open() << endl;
50
   cout << "Expected: false" << endl;
51
   my_lock.push(0);
52
   my_lock.push(0);
53
   my_lock.push(4);
54
   my_lock.push(2);
55
   cout << my_lock.open() << endl;
56
   cout << "Expected: true" << endl;
57
   my_lock.push(0);
58
   my_lock.push(4);
59
   my_lock.push(2);
60
   cout << my_lock.open() << endl;
61
   cout << "Expected: false" << endl;
62
   my_lock.push(0);
63
   my_lock.push(0);
64
   my_lock.push(0);
65
   my_lock.push(4);
66
   my_lock.push(2);
67
   cout << my_lock.open() << endl;
68
   cout << "Expected: false" << endl;
69
   my_lock.push(0);
70
   my_lock.push(0);
71
   my_lock.push(4);
72
   my_lock.push(2);
73
   cout << my_lock.open() << endl;
74
   cout << "Expected: true" << endl;
75
   return 0;
76
}