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/example1.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Sem. 10/example1.cpp (limited to 'Sem. 10/example1.cpp') diff --git a/Sem. 10/example1.cpp b/Sem. 10/example1.cpp new file mode 100644 index 0000000..41a79ff --- /dev/null +++ b/Sem. 10/example1.cpp @@ -0,0 +1,59 @@ +#include +using namespace std; + +bool isDigit(char ch) +{ + return '0' <= ch && ch <= '9'; +} + +void countNumbersAndDigits(const char* str, unsigned& numbersCount, unsigned& digitsCount ) +{ + unsigned stringSize = strlen(str); + for (unsigned i = 0; i < stringSize; i++) + { + if (isDigit(str[i])) + { + digitsCount++; + if (i == 0 || !isDigit(str[i - 1])) + numbersCount++; + } + } +} + +char* censoreNumbers(const char* str) +{ + unsigned digitsCount = 0; + unsigned numbersCount = 0; + countNumbersAndDigits(str, numbersCount, digitsCount); + + char* result = new char[strlen(str) - digitsCount + numbersCount + 1]; + unsigned resultIter = 0; + + unsigned strIter = 0; + + while (str[strIter] != '\0') + { + if (isDigit(str[strIter])) + { + if (resultIter == 0 || result[resultIter - 1] != '*') + result[resultIter++] = '*'; + } + else + result[resultIter++] = str[strIter]; + strIter++; + } + result[resultIter] = '\0'; + return result; +} + + +int main() +{ + char text[] = "abdg1236gdfgfd445fdg4"; + + char* result = censoreNumbers(text); + + cout << result << endl; + + delete[] result; +} -- cgit v1.3.1-23-gd82d