Added function to count occurrences of a char in a string

This commit is contained in:
2020-07-28 01:08:14 -04:00
parent 077e265de3
commit 1ee5d04871
2 changed files with 59 additions and 8 deletions

View File

@@ -1,10 +1,10 @@
//myClasses/Algorithms.hpp //myClasses/Algorithms.hpp
//Matthew Ellison //Matthew Ellison
// Created: 11-08-18 // Created: 11-08-18
//Modified: 02-28-19 //Modified: 07-28-20
//This file contains the declarations and implementations to several algoritms that I have found useful //This file contains the declarations and implementations to several algoritms that I have found useful
/* /*
Copyright (C) 2019 Matthew Ellison Copyright (C) 2020 Matthew Ellison
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by it under the terms of the GNU Lesser General Public License as published by
@@ -86,6 +86,8 @@ T findMin(const std::vector<T>& ary);
//This function finds the largest element in a vector //This function finds the largest element in a vector
template <class T> template <class T>
T findMax(const std::vector<T>& ary); T findMax(const std::vector<T>& ary);
//This function returns the number of times the character occurs in the string
int findNumOccurrence(std::string str, char ch);
//This is a function that returns all the primes <= goalNumber and returns a vector with those prime numbers //This is a function that returns all the primes <= goalNumber and returns a vector with those prime numbers
@@ -479,6 +481,20 @@ T findMax(const std::vector<T>& ary){
return max; return max;
} }
//This function returns the number of times the character occurs in the string
int findNumOccurrence(std::string str, char ch){
int num = 0; //Set the number of occurrences to 0 to start
//Loop through every character in the string and compare it to the character passed in
for(char strCh : str){
//If the character is the same as the one passed in increment the counter
if(strCh == ch){
++num;
}
}
//Return the number of times the character appeared in the string
return num;
}
} }

View File

@@ -1,10 +1,10 @@
//myClasses/Algorithms.cpp //myClasses/Algorithms.cpp
//Matthew Ellison //Matthew Ellison
// Created: 11-14-18 // Created: 11-14-18
//Modified: 02-28-19 //Modified: 07-28-20
//This is the file that tests all my algorithms, both for speed and accuracy //This is the file that tests all my algorithms, both for speed and accuracy
/* /*
Copyright (C) 2019 Matthew Ellison Copyright (C) 2020 Matthew Ellison
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by it under the terms of the GNU Lesser General Public License as published by
@@ -51,15 +51,16 @@ bool testQuickSort();
bool testSearch(); bool testSearch();
bool testFindMin(); bool testFindMin();
bool testFindMax(); bool testFindMax();
bool testFindNumOccurrence();
int main(){ int main(){
mee::Stopwatch timer; mee::Stopwatch timer;
bool passedTest = false; bool passedTest = false;
std::vector<boolFn> functions {testGetPrimes, testGetNumPrimes, testGetFactors, tetsGetDivisors, testGetSum, testGetProduct, testIsFound, testGetPermutations, std::vector<boolFn> functions {testGetPrimes, testGetNumPrimes, testGetFactors, tetsGetDivisors, testGetSum, testGetProduct, testIsFound, testGetPermutations,
testGetFib, testGetAllFib, testBubbleSort, testQuickSort, testSearch, testFindMin, testFindMax}; testGetFib, testGetAllFib, testBubbleSort, testQuickSort, testSearch, testFindMin, testFindMax, testFindNumOccurrence};
std::vector<std::string> names {"getPrimes", "getNumPrimes", "getFactors", "getDivisors", "getSum", "getProduct", "isFound", "getPermutations", std::vector<std::string> names {"getPrimes", "getNumPrimes", "getFactors", "getDivisors", "getSum", "getProduct", "isFound", "getPermutations",
"getFib", "getAllFib", "bubbleSort", "quickSort", "search", "findMin", "findMax"}; "getFib", "getAllFib", "bubbleSort", "quickSort", "search", "findMin", "findMax", "findNumOccurrence"};
//Start doing tests and print out the results of each //Start doing tests and print out the results of each
for(int cnt = 0;cnt < functions.size();++cnt){ for(int cnt = 0;cnt < functions.size();++cnt){
@@ -424,6 +425,36 @@ bool testFindMax(){
return true; return true;
} }
bool testFindNumOccurrence(){
//Test 1
std::string testString = "abcdefgdd";
char testChar = 'a';
int correctAnswer = 1;
int answer = mee::findNumOccurrence(testString, testChar);
if(correctAnswer != answer){
return false;
}
//Test 2
testChar = 'd';
correctAnswer = 3;
answer = mee::findNumOccurrence(testString, testChar);
if(correctAnswer != answer){
return false;
}
//Test 3
testChar = 'h';
correctAnswer = 0;
answer = mee::findNumOccurrence(testString, testChar);
if(correctAnswer != answer){
return false;
}
//If it hasn't failed a test then return true for passing all the tests
return true;
}
/* Results: /* Results:
Function getPrimes() passed the test Function getPrimes() passed the test
The test took 0.000 nanoseconds The test took 0.000 nanoseconds
@@ -466,11 +497,11 @@ The test took 0.000 nanoseconds
Function bubbleSort() passed the test Function bubbleSort() passed the test
The test took 142.002 milliseconds The test took 1.031 seconds
Function quickSort() passed the test Function quickSort() passed the test
The test took 1.003 milliseconds The test took 4.000 milliseconds
Function search() passed the test Function search() passed the test
@@ -483,4 +514,8 @@ The test took 0.000 nanoseconds
Function findMax() passed the test Function findMax() passed the test
The test took 0.000 nanoseconds The test took 0.000 nanoseconds
Function findNumOccurrence() passed the test
The test took 0.000 nanoseconds
*/ */