I am working on ROT13 for c++ practice. however this bit of code here returns an error and fails to compile, i do not understand why! I am posting a snippet of code in the following lines
string encode(string &x)
{
char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
for (size_t l=0;l<x.size();++l){
cout<<x[l];
cout<< strchr(alphabet,x[l]);
}
return x;
}
Q2. Also help me return the index of the matching letter from alphabet[] (e.g.,5 for ‘f’) to which i can add 13 and append that to x and so on ..
Q3. Besides practice, which course in CS would help me develop more efficient algorithms? Is it theory of computation, discrete mathematics, or algorithms ?
In order, starting with question 1:
The following compiles fine for me:
Make sure:
coutandstrchr.std::prefixes unless you’re using thestdnamespace.ptrproblem.Question 2:
If you’re looking for a handy ROT-13 method, consider using two C strings, one for the source and one for the translation:
Then you can use
strchrto look it up in the first one and use that pointer to find the equivalent in the second.That would output the character as-is if it wasn’t found or look up the translation if it was found. You may also want to put the capital letters in there as well.
Question 3:
If you want to learn about efficient algorithms, I’d go for, surprisingly enough, an algorithms course 🙂
Theory of computation sounds a little dry, though it may well cover the theoretical basis behind algorithms. Discrete mathematics has applicability to algorithms but, again, it’s probably very theoretical. That’s all based on what the words mean, of course, the actual subject areas covered may be totally different, so you should probably take it up with the people offering the courses.
Extra bit:
If you’re looking for something to compare your own work to, here’s one I put together based on my suggestions above:
The building of the return string could have probably been done more efficiently (such as a new’ed character array which becomes a string only at the end) but it illustrates the “lookup” part of the method well.
The output is:
which you can verify here, if necessary.