From d3150b67f0b98c4c7a08e4b297d5fcb723cf609f Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 15 Dec 2021 21:09:37 +0200 Subject: Add files via upload --- Sem. 10/example2.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Sem. 10/example2.cpp (limited to 'Sem. 10/example2.cpp') diff --git a/Sem. 10/example2.cpp b/Sem. 10/example2.cpp new file mode 100644 index 0000000..5ae389c --- /dev/null +++ b/Sem. 10/example2.cpp @@ -0,0 +1,64 @@ +#include +using namespace std; + + +bool isLower(char ch) +{ + return 'a' <= ch && ch <= 'z'; +} +bool isUpper(char ch) +{ + return 'A' <= ch && ch <= 'Z'; +} +void countLowerAndCapitalLetters(const char* str, unsigned& lowerCount, unsigned& capitalCount) +{ + while (*str != '\0') + { + if (isLower(*str)) + lowerCount++; + else if (isUpper(*str)) + capitalCount++; + + str++; + } +} +void getTwoStrings(const char* str, char*& lowerStr, char*& upperStr) +{ + unsigned lowerCount = 0; + unsigned upperCount = 0; + countLowerAndCapitalLetters(str, lowerCount, upperCount); + + char* lowerSymbolsString = new char[lowerCount + 1]; + char* upperSymbolsString = new char[upperCount + 1]; + unsigned lowerIter = 0; + unsigned upperIter = 0; + + while (*str != '\0') + { + if (isLower(*str)) + lowerSymbolsString[lowerIter++] = *str; + else if (isUpper(*str)) + upperSymbolsString[upperIter++] = *str; + str++; + } + lowerSymbolsString[lowerIter] = '\0'; + upperSymbolsString[upperIter] = '\0'; + + lowerStr = lowerSymbolsString; + upperStr = upperSymbolsString; +} + + +int main() +{ + char* lowerStr = nullptr; + char* upperStr = nullptr; + + getTwoStrings("abc34345ABCDd", lowerStr, upperStr); + + cout << lowerStr << endl; + cout << upperStr << endl; + + delete[] lowerStr, upperStr; + +} -- cgit v1.3.1-23-gd82d