Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include<iostream>
- #include<algorithm>
- #include<cmath>
- #include<math.h>
- #include<string>
- #include<set>
- #include<vector>
- #include<map>
- #include<time.h>
- #include<stdlib.h>
- #include<list>
- using namespace std;
- vector<string>st;
- set<string> s1;
- set<string> s2;
- set<string> s3;
- inline void read() {
- //задача 8
- }
- inline void solve() {
- string s;
- getline(cin, s); // считываем текст
- int pos1 = 0; // позиция, с которой начинается текущее предложение
- for (int i = 0; i < s.size(); i++) {
- if (s[i] == '?' || s[i] == '!' || s[i] == '.') { // если нашли знак препинания
- st.push_back(s.substr(pos1, i - pos1 + 1)); // выделяем предложение с pos1 по i - pos1 + 1
- pos1 = i + 2; // пропускаем знак и пробел
- }
- }
- for (int l = 0; l < st.size(); l++) {
- if (st[l][st[l].size() - 1] == '.') { // если предложение с .
- pos1 = -1;
- for (int i = 0; i < st[l].size(); i = j) {
- if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
- pos1 = i; // первая позиция слова
- j = i; // конец слова
- while (isalpha(st[l][j]) && j < st[l].size()) {
- if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
- st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
- }
- j++;
- }
- s1.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
- pos1 = -1;
- }
- else {
- j++;
- }
- }
- }
- if (st[l][st[l].size() - 1] == '!') { // если предложение с !
- pos1 = -1;
- for (int i = 0; i < st[l].size(); i = j) {
- if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
- pos1 = i; // первая позиция слова
- j = i; // конец слова
- while (isalpha(st[l][j]) && j < st[l].size()) {
- if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
- st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
- }
- j++;
- }
- s2.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
- pos1 = -1;
- }
- else {
- j++;
- }
- }
- }
- if (st[l][st[l].size() - 1] == '?') { // если предложение с ?
- pos1 = -1;
- for (int i = 0; i < st[l].size(); i = j) {
- if (isalpha(st[l][i]) && pos1 == -1) { // если буква и ещё не начало слова
- pos1 = i; // первая позиция слова
- j = i; // конец слова
- while (isalpha(st[l][j]) && j < st[l].size()) {
- if (st[l][j] >= 'A' && st[l][j] <= 'Z') {
- st[l][j] = char(int(st[l][j]) + 32);// меняем заглавные буквы на строчные
- }
- j++;
- }
- s3.insert(st[l].substr(pos1, j - pos1)); // добавляем слово в соответствующее множество
- pos1 = -1;
- }
- else {
- j++;
- }
- }
- }
- }
- int cnt = 0; // количество слов в утвердительном, но которых нет в ! и ?
- for (auto it = s1.begin(); it != s1.end(); it++) {
- if (s2.count(*it) == 0 && s3.count(*it) == 0) { // слово из утвердительного, но его нет в восклицательном и вопросительном
- cout << *it << ' '; // вывод слова
- cnt++;
- }
- }
- cout << endl << cnt << endl; // вывод количества таких слов
- }
- int main() {
- setlocale(LC_ALL, "Russian"); // подключение русского языка
- read();
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement