Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<math.h>
  6. #include<string>
  7. #include<set>
  8. #include<vector>
  9. #include<map>
  10. #include<time.h>
  11. #include<stdlib.h>
  12. #include<list>
  13.  
  14. using namespace std;
  15. vector<string>st;
  16. set<string> s1;
  17. set<string> s2;
  18. set<string> s3;
  19.  
  20. inline void read() {
  21. //задача 8
  22. }
  23.  
  24. inline void solve() {
  25.  
  26. string s;
  27. getline(cin, s); // считываем текст
  28.  
  29. int pos1 = 0; // позиция, с которой начинается текущее предложение
  30. for (int i = 0; i < s.size(); i++) {
  31. if (s[i] == '?' || s[i] == '!' || s[i] == '.') { // если нашли знак препинания
  32. st.push_back(s.substr(pos1, i - pos1 + 1)); // выделяем предложение с pos1 по i - pos1 + 1
  33. pos1 = i + 2; // пропускаем знак и пробел
  34. }
  35. }
  36.  
  37. for (int l = 0; l < st.size(); l++) {
  38. if (st[l][st[l].size() - 1] == '.') { // если предложение с .
  39. pos1 = -1;
  40. for (int i = 0; i < st[l].size(); i = j) {
  41. if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
  42. pos1 = i; // первая позиция слова
  43. j = i; // конец слова
  44. while (isalpha(st[l][j]) && j < st[l].size()) {
  45. if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
  46. st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
  47. }
  48. j++;
  49. }
  50. s1.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
  51. pos1 = -1;
  52. }
  53. else {
  54. j++;
  55. }
  56. }
  57. }
  58. if (st[l][st[l].size() - 1] == '!') { // если предложение с !
  59. pos1 = -1;
  60. for (int i = 0; i < st[l].size(); i = j) {
  61. if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
  62. pos1 = i; // первая позиция слова
  63. j = i; // конец слова
  64. while (isalpha(st[l][j]) && j < st[l].size()) {
  65. if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
  66. st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
  67. }
  68. j++;
  69. }
  70. s2.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
  71. pos1 = -1;
  72. }
  73. else {
  74. j++;
  75. }
  76. }
  77. }
  78. if (st[l][st[l].size() - 1] == '?') { // если предложение с ?
  79. pos1 = -1;
  80. for (int i = 0; i < st[l].size(); i = j) {
  81. if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
  82. pos1 = i; // первая позиция слова
  83. j = i; // конец слова
  84. while (isalpha(st[l][j]) && j < st[l].size()) {
  85. if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
  86. st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
  87. }
  88. j++;
  89. }
  90. s3.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
  91. pos1 = -1;
  92. }
  93. else {
  94. j++;
  95. }
  96. }
  97. }
  98. }
  99.  
  100. int cnt = 0; // количество слов в утвердительном, но которых нет в ! и ?
  101. for (auto it = s1.begin(); it != s1.end(); it++) {
  102. if (s2.count(*it) == 0 && s3.count(*it) == 0) { // слово из утвердительного, но его нет в восклицательном и вопросительном
  103. cout << *it << ' '; // вывод слова
  104. cnt++;
  105. }
  106. }
  107. cout << endl << cnt << endl; // вывод количества таких слов
  108.  
  109. }
  110.  
  111. int main() {
  112. setlocale(LC_ALL, "Russian"); // подключение русского языка
  113. read();
  114. solve();
  115. return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement