Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Даниелян Самвел, 36 вариант, 11 лаба
- // Во входном файле записан русский текст, содержащий не более 1000 слов.
- // Вывести в порядке, обратном к алфавитному, слова текста, содержащие не менее четырёх согласных,
- // в остальных словах удалить гласные и продублировать согласные буквы. Слова вывести по одному в строке.
- #include "pch.h"
- #include <iostream>
- #include <fstream>
- using namespace std;
- bool isLetter(int c)
- {
- if ((c >= (unsigned char)'А' && c <= (unsigned char)'я') || c == (unsigned char)'ё' || c == (unsigned char)'Ё')
- return true;
- else
- return false;
- }
- int countConsonants(char word[]) {
- int counter = 0;
- char consonants[] = "бвгджзйклмнпрстфхцчшщъь";
- for (int i = 0; i < strlen(word); i++)
- for (int j = 0; j < strlen(consonants); j++)
- if ((word[i] == consonants[j]) || (word[i] == toupper(consonants[j]))) {
- counter++;
- break;
- }
- int a = 1;
- return counter;
- }
- char* deleteVowelsdoubleConsonants(char word[]) {
- char vowels[] = "оуаэыёюяеи";
- char consonants[] = "бвгджзйклмнпрстфхцчшщъь";
- char* copyWord = word;
- int size = strlen(copyWord);
- char* transformedWord = new char[size];
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < strlen(vowels); j++) {
- if ((copyWord[i] == vowels[j]) || (copyWord[i] == toupper(vowels[j]))) {
- size--;
- for (int k = i; k < size; k++) {
- copyWord[k] = copyWord[k + 1];
- }
- i--;
- break;
- }
- }
- }
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < strlen(consonants); j++) {
- if ((copyWord[i] == consonants[j]) || (copyWord[i] == toupper(consonants[j]))) {
- size++;
- for (int k = size; k > i; k--) {
- copyWord[k] = copyWord[k - 1];
- }
- i++;
- break;
- }
- }
- }
- for (int i = 0; i < size; i++) {
- transformedWord[i] = copyWord[i];
- }
- transformedWord[size] = 0;
- return transformedWord;
- }
- char* changeWord(char word[]) {
- char* copyWord = word;
- if (!(countConsonants(copyWord) >= 4))
- copyWord = deleteVowelsdoubleConsonants(word);
- return copyWord;
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- FILE *input;
- freopen_s(&input, "myFile.txt", "r", stdin);
- char word[100], * pword = nullptr, *(words[1000]);
- int n = 0, i = 0;
- int character = 0;
- while ((character = getchar()) > 0)
- {
- if (isLetter(character))
- {
- pword = word;
- i = 0;
- while (isLetter(character))
- {
- *pword = character;
- *pword++;
- i++;
- character = getchar();
- }
- }
- if (pword)
- {
- pword = nullptr;
- words[n] = new char[i + 1];
- for (int j = 0; j < i; j++)
- words[n][j] = word[j];
- words[n][i] = 0;
- n++;
- }
- }
- for (int i = 0; i < n - 1; i++)
- for (int j = i + 1; j < n; j++) //
- if ((countConsonants(words[i]) >= 4) && (countConsonants(words[j]) >= 4) && (words[i][0] < words[j][0]))
- {
- swap(words[i], words[j]);
- }
- for (int j = 0; j < n; j++) {
- words[j] = changeWord(words[j]);
- }
- for (int j = 0; j < n; j++) {
- cout << words[j] << endl;
- }
- fclose(input);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement