Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <conio.h>
- #include <locale.h>
- #include <string.h>
- #include <string>
- std::string inputString() {
- std::string s;
- char inputc[255];
- printf("%s", "Введите строку: ");
- gets_s(inputc);
- for (int i = 0; i < strlen(inputc); i++)
- s += inputc[i];
- return s;
- }
- std::string correctingString(std::string s) {
- std::string outString;
- for (int i = 0; i < s.size(); i++)
- if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') || s[i] == ' ')
- outString += s[i];
- outString += ' ';
- int i = 0;
- while (i < outString.size()) {
- while (outString[i] == ' ' && outString[i + 1] == ' ')
- outString.erase(i, 1);
- i++;
- }
- while (outString[0] == ' ')
- outString.erase(0, 1);
- return outString;
- }
- void printTask() {
- printf("%s", "1) - Напечатать все слова, отличные от последнего слова, в которые входят те же согласные буквы, что и в первое слово.\n");
- printf("%s", "2) - Напечатать все слова, отличные от последнего слова, удаляя все гласные буквы, которые уже встречались раньше.\n");
- }
- void printNewString(std::string s) {
- printf("%s", "Введённая строка: ");
- for (int i = 0; i < s.size() - 1; i++)
- printf("%c", s[i]);
- printf("%c", '\n');
- }
- std::string *findWords(std::string s) {
- int kol = 0;
- std::string* words = new std::string[100];
- while (s != "") {
- if (s[0] == ' ')
- kol++;
- else
- words[kol] += s[0];
- s.erase(0, 1);
- }
- return words;
- }
- int getNumOfWords(std::string* words) {
- int i = 0;
- while (words[i] != "")
- i++;
- return i;
- }
- void printWords(std::string* words, int n) {
- printf("%s", "Найденные слова: \n");
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < words[i].size(); j++)
- printf("%c", words[i][j]);
- printf("%c", '\n');
- }
- }
- std::string createFirstString(std::string* words, int kol) {
- int numLetters, num = 0;
- std::string letters = "";
- std::string consonants = "qwrtpsdfghjklzxcvbnmQWRTPSDFGHJKLZXCVBNM";
- std::string ansString = "";
- int z = 0;
- for (int i = 0; i < words[0].size(); i++)
- for (int j = 0; j < consonants.size() - 20; j++)
- if (words[0][i] == consonants[j] || words[0][i] == consonants[j + 20]) {
- letters += consonants[j];
- letters += consonants[j + 20];
- break;
- }
- for (int i = 0; i < kol; i++)
- if (words[i] != words[kol - 1]) {
- if (i == 3) {
- z++;
- }
- numLetters = 0;
- num = 0;
- for (int j = 0; j < words[i].size(); j++)
- for (int jj = 0; jj < consonants.size() - 20; jj++)
- if (words[i][j] == consonants[jj] || words[i][j] == consonants[jj + 20]) {
- num++;
- for (int c = 0; c < letters.size(); c++)
- if (words[i][j] == letters[c]) {
- numLetters++;
- break;
- }
- break;
- }
- if (num == numLetters)
- ansString += words[i] + ' ';
- }
- return ansString;
- }
- std::string createSecondString(std::string* words, int kol) {
- std::string vowels = "eyuioaEYUIOA";
- std::string ansString = "";
- bool usedVowels[6] = { false };
- bool flag;
- for (int i = 0; i < kol; i++)
- if (words[i] != words[kol - 1]) {
- for (int j = 0; j < words[i].size(); j++) {
- flag = false;
- for (int c = 0; c < 6; c++)
- if (words[i][j] == vowels[c] || words[i][j] == vowels[c + 6]) {
- if (!usedVowels[c]) {
- ansString += words[i][j];
- usedVowels[c] = true;
- }
- flag = true;
- }
- if (!flag)
- ansString += words[i][j];
- }
- ansString += ' ';
- }
- return ansString;
- }
- void printString1(std::string s) {
- printf("%s", "Первая полученная строка: ");
- for (int i = 0; i < s.size(); i++)
- printf("%c", s[i]);
- printf("%c", '\n');
- }
- void printString2(std::string s) {
- printf("%s", "Вторая полученная строка: ");
- for (int i = 0; i < s.size(); i++)
- printf("%c", s[i]);
- printf("%c", '\n');
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- printTask();
- std::string inputs, s;
- inputs = inputString();
- s = correctingString(inputs);
- if (s == "") {
- printf("%s", "Введена пустая строка");
- return 0;
- }
- printNewString(s);
- std::string* words = (std::string*)malloc(sizeof(std::string));
- words = findWords(s);
- int kol = getNumOfWords(words);
- printWords(words, kol);
- std::string s1 = createFirstString(words, kol);
- if (s1 == "")
- s1 = "получена пустая строка";
- printString1(s1);
- std::string s2 = createSecondString(words, kol);
- if (s2 == "")
- s2 = "получена пустая строка";
- printString2(s2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement