Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int ArrRealLength(char* arr) {
- int i = 0;
- while (arr[i] != '\0') {
- i++;
- }
- return i;
- }
- bool IsWordValid(char* str) {
- bool isWordValid;
- int strRealLength = ArrRealLength(str);
- for (int i = 0; i < strRealLength; i++)
- {
- if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z') || str[i] == '-' || str[i] == '_') {
- isWordValid = true;
- }
- else {
- isWordValid = false;
- break;
- }
- }
- return isWordValid;
- }
- int CounterNumberOfShortestWords(int counterLetters, int counterNumberOfShortestWords, int numberLettersShortestWord) {
- if (counterLetters < numberLettersShortestWord) {
- counterNumberOfShortestWords = 1;
- numberLettersShortestWord = counterLetters;
- }
- else if (counterLetters == numberLettersShortestWord) {
- counterNumberOfShortestWords++;
- numberLettersShortestWord = counterLetters;
- }
- return counterNumberOfShortestWords;
- }
- int NumberLettersShortestWord(int counterLetters, int counterNumberOfShortestWords, int numberLettersShortestWord) {
- if (counterLetters < numberLettersShortestWord) {
- counterNumberOfShortestWords = 1;
- numberLettersShortestWord = counterLetters;
- }
- else if (counterLetters == numberLettersShortestWord) {
- counterNumberOfShortestWords++;
- numberLettersShortestWord = counterLetters;
- }
- return numberLettersShortestWord;
- }
- int NumberOfShortestWords(char* str) {
- int counterNumberOfShortestWords = 0;
- int counterLetters = 0;
- int numberLettersShortestWord = INT_MAX;
- char currentWord[100] = {};
- int strRealLength = ArrRealLength(str);
- for (int i = 0; i < strRealLength; i++)
- {
- if (str[i] == ' ' || str[i] == '\t') {
- if (counterLetters == 0) {
- continue;
- }
- else {
- if (IsWordValid(currentWord) == true) {
- if (counterLetters <= numberLettersShortestWord) {
- counterNumberOfShortestWords = CounterNumberOfShortestWords(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
- numberLettersShortestWord = NumberLettersShortestWord(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
- }
- /*if (counterLetters < numberLettersShortestWord) {
- counterNumberOfShortestWords = 1;
- numberLettersShortestWord = counterLetters;
- }
- else if (counterLetters == numberLettersShortestWord) {
- counterNumberOfShortestWords++;
- numberLettersShortestWord = counterLetters;
- }*/
- for (int i = 0; i < counterLetters; i++)
- {
- currentWord[i] = {};
- }
- counterLetters = 0;
- }
- }
- }
- else {
- currentWord[counterLetters]+= str[i];
- counterLetters++;
- if (IsWordValid(currentWord) == true && i == strRealLength - 1) {
- if (counterLetters <= numberLettersShortestWord) {
- counterNumberOfShortestWords = CounterNumberOfShortestWords(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
- numberLettersShortestWord = NumberLettersShortestWord(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
- }
- /*if (counterLetters < numberLettersShortestWord) {
- counterNumberOfShortestWords = 1;
- numberLettersShortestWord = counterLetters;
- }
- else if (counterLetters == numberLettersShortestWord) {
- counterNumberOfShortestWords++;
- numberLettersShortestWord = counterLetters;
- } */
- }
- }
- }
- return counterNumberOfShortestWords;
- }
- int main()
- {
- char str[100];
- cin.getline(str,100);
- // Finding the number of the shortest valid words in str
- int numberOfShortestWords = NumberOfShortestWords(str);
- cout << numberOfShortestWords;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement