﻿ C++ : Check if there are two values 15, 15 adjacent to each other in a given array of integers

# C++ Exercises: Check if there are two values 15, 15 adjacent to each other in a given array of integers

## C++ Basic Algorithm: Exercise-117 with Solution

Write a C++ program to check if there are two values 15, 15 adjacent to each other in a given array (length should be at least 2) of integers. Return true otherwise false.

Test Data:
({ 5, 5, 1, 15, 15 }) -> 1
({ 15, 2, 3, 4, 15 }) -> 0
({ 3, 3, 15, 15, 5, 5}) -> 1
({ 1, 5, 15, 7, 8, 15})-> 0

Sample Solution:

C++ Code :

``````#include <iostream>

using namespace std;
static bool test(int numbers[], int arr_length)
{
for (int i = 0; i < arr_length - 1; i++)
{
if (numbers[i + 1] == numbers[i] && numbers[i] == 15) return true;
}
return false;
}
int main()
{
int nums1[] = {5, 5, 1, 15, 15};
int arr_length = sizeof(nums1) / sizeof(nums1);
cout << test(nums1, arr_length) << endl;
int nums2[] = {15, 2, 3, 4, 15};
arr_length = sizeof(nums2) / sizeof(nums2);
cout << test(nums2, arr_length) << endl;
int nums3[] = {3, 3, 15, 15, 5, 5};
arr_length = sizeof(nums3) / sizeof(nums3);
cout << test(nums3, arr_length) << endl;
int nums4[] = {1, 5, 15, 7, 8, 15};
arr_length = sizeof(nums4) / sizeof(nums4);
cout << test(nums4, arr_length) << endl;
return 0;
}
``````

Sample Output:

```1
0
1
0
```

Flowchart: C++ Code Editor:

What is the difficulty level of this exercise?

﻿

## C++ Programming: Tips of the Day

What is the usefulness of `enable_shared_from_this?

It enables you to get a valid shared_ptr instance to this, when all you have is this. Without it, you would have no way of getting a shared_ptr to this, unless you already had one as a member.

```class Y: public enable_shared_from_this
{
public:

shared_ptr f()
{
return shared_from_this();
}
}

int main()
{
shared_ptr p(new Y);
shared_ptr q = p->f();
assert(p == q);
assert(!(p < q || q < p)); // p and q must share ownership
}
```

The method f() returns a valid shared_ptr, even though it had no member instance. Note that you cannot simply do this:

```class Y: public enable_shared_from_this
{
public:

shared_ptr f()
{
return shared_ptr(this);
}
}
```

The shared pointer that this returned will have a different reference count from the "proper" one, and one of them will end up losing and holding a dangling reference when the object is deleted.

Ref : https://bit.ly/3pwVzzz