Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int ArrRealLength(char* arr) {
  6. int i = 0;
  7. while (arr[i] != '\0') {
  8. i++;
  9. }
  10. return i;
  11. }
  12.  
  13. bool IsWordValid(char* str) {
  14. bool isWordValid;
  15. int strRealLength = ArrRealLength(str);
  16. for (int i = 0; i < strRealLength; i++)
  17. {
  18. if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z') || str[i] == '-' || str[i] == '_') {
  19. isWordValid = true;
  20. }
  21. else {
  22. isWordValid = false;
  23. break;
  24. }
  25. }
  26.  
  27. return isWordValid;
  28. }
  29. int CounterNumberOfShortestWords(int counterLetters, int counterNumberOfShortestWords, int numberLettersShortestWord) {
  30. if (counterLetters < numberLettersShortestWord) {
  31. counterNumberOfShortestWords = 1;
  32. numberLettersShortestWord = counterLetters;
  33. }
  34. else if (counterLetters == numberLettersShortestWord) {
  35. counterNumberOfShortestWords++;
  36. numberLettersShortestWord = counterLetters;
  37. }
  38. return counterNumberOfShortestWords;
  39. }
  40.  
  41. int NumberLettersShortestWord(int counterLetters, int counterNumberOfShortestWords, int numberLettersShortestWord) {
  42. if (counterLetters < numberLettersShortestWord) {
  43. counterNumberOfShortestWords = 1;
  44. numberLettersShortestWord = counterLetters;
  45. }
  46. else if (counterLetters == numberLettersShortestWord) {
  47. counterNumberOfShortestWords++;
  48. numberLettersShortestWord = counterLetters;
  49. }
  50. return numberLettersShortestWord;
  51. }
  52.  
  53. int NumberOfShortestWords(char* str) {
  54. int counterNumberOfShortestWords = 0;
  55. int counterLetters = 0;
  56. int numberLettersShortestWord = INT_MAX;
  57. char currentWord[100] = {};
  58.  
  59.  
  60. int strRealLength = ArrRealLength(str);
  61. for (int i = 0; i < strRealLength; i++)
  62. {
  63. if (str[i] == ' ' || str[i] == '\t') {
  64.  
  65. if (counterLetters == 0) {
  66. continue;
  67. }
  68. else {
  69. if (IsWordValid(currentWord) == true) {
  70.  
  71.  
  72. if (counterLetters <= numberLettersShortestWord) {
  73. counterNumberOfShortestWords = CounterNumberOfShortestWords(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
  74. numberLettersShortestWord = NumberLettersShortestWord(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
  75. }
  76. /*if (counterLetters < numberLettersShortestWord) {
  77. counterNumberOfShortestWords = 1;
  78. numberLettersShortestWord = counterLetters;
  79. }
  80. else if (counterLetters == numberLettersShortestWord) {
  81. counterNumberOfShortestWords++;
  82. numberLettersShortestWord = counterLetters;
  83. }*/
  84.  
  85. for (int i = 0; i < counterLetters; i++)
  86. {
  87. currentWord[i] = {};
  88. }
  89. counterLetters = 0;
  90. }
  91.  
  92. }
  93.  
  94. }
  95.  
  96. else {
  97. currentWord[counterLetters]+= str[i];
  98. counterLetters++;
  99. if (IsWordValid(currentWord) == true && i == strRealLength - 1) {
  100.  
  101.  
  102. if (counterLetters <= numberLettersShortestWord) {
  103. counterNumberOfShortestWords = CounterNumberOfShortestWords(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
  104. numberLettersShortestWord = NumberLettersShortestWord(counterLetters, counterNumberOfShortestWords, numberLettersShortestWord);
  105. }
  106.  
  107. /*if (counterLetters < numberLettersShortestWord) {
  108. counterNumberOfShortestWords = 1;
  109. numberLettersShortestWord = counterLetters;
  110. }
  111. else if (counterLetters == numberLettersShortestWord) {
  112. counterNumberOfShortestWords++;
  113. numberLettersShortestWord = counterLetters;
  114. } */
  115. }
  116. }
  117. }
  118. return counterNumberOfShortestWords;
  119. }
  120.  
  121. int main()
  122. {
  123. char str[100];
  124. cin.getline(str,100);
  125.  
  126. // Finding the number of the shortest valid words in str
  127. int numberOfShortestWords = NumberOfShortestWords(str);
  128. cout << numberOfShortestWords;
  129.  
  130. return 0;
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement