I`m trying to create a special counter in C# … I mean the counter will be consisting of characters not numbers.
I have a char[] of size 3:
char[] str = new char[strSize];
int i = 0;
int tmpSize = strSize - 1;
int curr;
while(!isEqual(str,finalStr,strSize))
{
str[strSize] = element[i % element.Length];
i++;
if (str[strSize] == element[element.Length - 1])
{
int j = strSize - 1;
if (j > 0)
{
j--;
int tmpCntr = j+1;
curr = getCurrentID(str[tmpCntr]);
str[tmpCntr] = element[(curr + 1) % element.Length];
while (str[tmpCntr] == element[0] && (i % element.Length > 0) && tmpCntr < 0)
{
tmpCntr--;
curr = getCurrentID(str[tmpCntr]);
str[tmpCntr] = element[(curr + 1) % element.Length];
}
}
}
}
if the strSize < 3 the application works fine and gives accurate output. If the strSize >= 3, the application goes in infinite loop!
Need help.
if this is hard this way, I would need a way to create a numerical counter and I`ll work on it to suite my application.
You haven’t shown what half of your methods or parameters are.
Personally I would take a different approach. I would use an iterator block to make it easy to return an
IEnumerable<string>, and internally just keep an integer counter. Then you just need to write a method to convert a counter value and “alphabet of digits” into a string. Something like this:Another alternative is to do the same thing with LINQ, if a range of
intis enough:In either case, you just iterate over the returned sequence to get appropriate counter values.
With those in place, you just need to implement
ConvertToString– which would probably be something like this:Here’s a test program showing it all working:
Output: