Write a function in c++ using for loops: The function must not use any function
ID: 3933562 • Letter: W
Question
Write a function in c++ using for loops:
The function must not use any function templates from the algorithms portion of the Standard C++ library.
bool locateSequence(const string a[], int n, string target, int& begin, int& end);
Find the earliest occurrence in a of one or more consecutive strings that are equal to target; set begin to the position of the first occurrence of target, set end to the last occurrence of target in that earliest consecutive sequence, and return true. If n is negative or if no string in a is equal to target, leave begin and end unchanged and return false. Here's an example:
Notwithstanding each function's behavior described below, all functions that return an int must return 1 if they are passed any bad arguments (e.g. a negative array size, or a position that would require looking at the contents of an element past the last element we're interested in). Unless otherwise noted, passing 0 to the function as the array size is not itself an error; it merely indicates the function should examine no elements of the array.
Explanation / Answer
Please follow the code and comments for description :
CODE :
#include <iostream> // required header files
using namespace std;
bool locateSequence(const string a[], int n, string target, int& begin, int& end); // function declaration
bool locateSequence(const string a[], int n, string target, int& begin, int& end) { // function definiton
bool found = false; // locla varaibles
if(n <= 0) { // check for the size of the array
return false; // return false
}
for(int counter = 0; counter < n; counter++){ // loop over the size of the array
if((a[counter] == target) && a[(counter + 1)] == target){ // check for the occurrence
begin = counter; // assign the data
end = (counter + 1);
found = true;
break; // break the loop
} else if ((a[counter] == target)){ // if found only once
begin = 1; // return the standard values
end = 1;
found = true;
} else {
continue; // else loop over the data
}
}
if(found == true) { // check for the flag
return true;
} else {
return false;
}
}
int main() // driver method
{
string d[9] = {"jon", "daenerys", "samwell", "samwell", "margaery", "margaery", "margaery", "samwell", "samwell"}; // reuired array
int b; // local variables
int e;
bool b1 = locateSequence(d, 9, "samwell", b, e); // returns true and sets b to 2 and e to 3
cout << "Found at " << b << " and " << e << endl; // data to be printed
bool b2 = locateSequence(d, 9, "daenerys", b, e); // returns true and sets b to 1 and e to 1
cout << "Found at " << b << " and " << e << endl; // data to be printed
bool b3 = locateSequence(d, 9, "cersei", b, e); // returns false and leaves b and e unchanged
cout << "Found at " << b << " and " << e << endl; // data to be printed
return 0;
}
OUTPUT :
Found at 2 and 3
Found at 1 and 1
Found at 1 and 1
Hope this is helpful.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.