Skip to content

Commit 25ad23b

Browse files
Find span of an array
1 parent 1b126ed commit 25ad23b

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

Diff for: find_span_of_an_array.cpp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#include <iostream>
2+
using namespace std;
3+
4+
void calculate_span(int* inputArrayPtr, int inputArraySize, int* outputArrayPtr) {
5+
outputArrayPtr[0] = 1;
6+
int i, counter;
7+
for (i = 1; i < inputArraySize; i++) {
8+
counter = 1;
9+
while ((i - counter) >= 0 && inputArrayPtr[i] >= inputArrayPtr[i - counter])
10+
counter += outputArrayPtr[i - counter];
11+
outputArrayPtr[i] = counter;
12+
}
13+
}
14+
15+
void get_input(int** inputPtr, int* inputSize) {
16+
cout << "What is the size of the input array? ";
17+
cin >> *inputSize;
18+
*inputPtr = (int*) malloc(*inputSize);
19+
int i;
20+
for (i = 0; i < *inputSize; i++) {
21+
cout << "Index " << i << " value: ";
22+
cin >> (*inputPtr)[i];
23+
}
24+
}
25+
26+
void print_output(int* outputPtr, int outputSize) {
27+
int i;
28+
cout << "[";
29+
for (i = 0; i < outputSize - 1; i++)
30+
cout << outputPtr[i] << ",";
31+
cout << outputPtr[outputSize - 1] << "]" << endl;
32+
}
33+
34+
int main() {
35+
int* inputPtr;
36+
int inputSize;
37+
int* outputPtr;
38+
get_input(&inputPtr, &inputSize);
39+
calculate_span(inputPtr, inputSize, outputPtr);
40+
print_output(outputPtr, inputSize);
41+
}
42+

0 commit comments

Comments
 (0)