I am very new to C++ programming and you will see why.
I want to make a character array consisting of a few words that I want to search with a linear search function. Does this array have to be a two-dimensional array? For example:
char Colors[3][6] = {"red", "green", "blue"};
I tried it like this:
char Colors[] = {"red", "green", "blue"};
This gave me a "too many initializers" error.
I assume the 1st method is correct because it states the amount of elements in the array and the maximum length of an element, correct?
Now how would I implement a linear search function to find a word inside that array? Can I do something like the following:
(Assuming the linearSearch function has already been declared)
char searchKey;
char element;
char Colors[3][6] = {"red", "green", "blue"};
printf("Enter the color to look for: \n");
scanf("%s", searchKey);
element = linearSearch(Colors, searchKey, ??); //?? is where I don't know what to enter
if (element != -1)
{
printf("Found the word.\n");
}
else
{
printf("Didn't find the word.\n");
}
Is this possible? If so, what would the declaration look for the linearSearch function? I hope I provided enough information for this to be somewhat usable.
edit: Thanks all for the help, got the program working as intended.
I would recommend to learn about the C++ standard library, which would help you very much. For example,
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
vector<string> words;
words.push_back("red");
words.push_back("blue");
words.push_back("green");
if (find(words.begin(), words.end(), "green") != words.end())
cout << "found green!"
else
cout << "didn't find it";
Why implement linearSearch
yourself? c++ already has std::find
which does it for you!
Moreover, if you use a set
instead of a vector
, you can now use std::binary_search
which is O(log n) instead of O(n), since a set is sorted.