Предмет: Информатика, автор: Kukuwka0Ha0DepeBe

C++
Вимоги до звіту: Звіт повинен бути оформлений у вигляді електронного
документа: програмний код з коментарями, висновки про результати виконуваних дій
і копії екрану. Розмір файлу звіту до 2 МБ зі скріншотами.
ЗАВДАННЯ:
Задано рядок, яка складається з символів. Символи складаються в слова. Слова
відокремлюються одним або декількома пробілами. В кінці тексту ставиться крапка.
Текст містить не більше 255 символів. Виконати введення рядка, використовуючи
функцію cin.getline (s, 255) і обробку рядка відповідно до завдання.
1. Надрукувати найдовше і найкоротше слово в цьому рядку.
2. Надрукувати всі слова, які не містять голосних букв.
3. Надрукувати всі слова, які містять по одній цифрі.
4. Надрукувати всі слова, які збігаються з першим словом.
5. Перетворити рядок таким чином, щоб спочатку в ньому були надруковані
тільки букви, а потім тільки цифри, не змінюючи порядку проходження символів в
рядку.
6. Перетворити рядок так, щоб всі букви в ньому були відсортовані за алфавітом.
7. Перетворити рядок таким чином, щоб в його початку були записані слова, які
містять тільки цифри.
8. Прибрати з рядка всі зазначені символи і відповідно зменшити його розмір.

Ответы

Автор ответа: 4ejl89211
0

#include <iostream>

#include <cstring>

#include <cctype>

#include <algorithm>

const int MAX_SIZE = 255;

void printLongestShortestWord(const char* text) {

   char longestWord[MAX_SIZE];

   char shortestWord[MAX_SIZE];

   std::istringstream iss(text);

   iss >> longestWord; // Прочитать первое слово и считать его и самым длинным и самым коротким

   strcpy(shortestWord, longestWord);

   char word[MAX_SIZE];

   while (iss >> word) {

       if (strlen(word) > strlen(longestWord)) {

           strcpy(longestWord, word);

       }

       if (strlen(word) < strlen(shortestWord)) {

           strcpy(shortestWord, word);

       }

   }

   std::cout << "Longest word: " << longestWord << std::endl;

   std::cout << "Shortest word: " << shortestWord << std::endl;

}

void printWordsWithoutVowels(const char* text) {

   char word[MAX_SIZE];

   std::istringstream iss(text);

   while (iss >> word) {

       bool hasVowel = false;

       for (int i = 0; i < strlen(word); i++) {

           if (tolower(word[i]) == 'a' || tolower(word[i]) == 'e' || tolower(word[i]) == 'i' || tolower(word[i]) == 'o' || tolower(word[i]) == 'u') {

               hasVowel = true;

               break;

           }

       }

       if (!hasVowel) {

           std::cout << word << std::endl;

       }

   }

}

void printWordsWithSingleDigit(const char* text) {

   char word[MAX_SIZE];

   std::istringstream iss(text);

   while (iss >> word) {

       int digitCount = 0;

       for (int i = 0; i < strlen(word); i++) {

           if (isdigit(word[i])) {

               digitCount++;

           }

       }

       if (digitCount == 1) {

           std::cout << word << std::endl;

       }

   }

}

void printWordsMatchingFirstWord(const char* text) {

   char firstWord[MAX_SIZE];

   std::istringstream iss(text);

   iss >> firstWord; // Прочитать первое слово

   char word[MAX_SIZE];

   while (iss >> word) {

       if (strcmp(word, firstWord) == 0) {

           std::cout << word << std::endl;

       }

   }

}

void rearrangeString(const char* text) {

   std::string letters;

   std::string digits;

   for (int i = 0; i < strlen(text); i++) {

       if (isalpha(text[i])) {

           letters += text[i];

       }

       else if (isdigit(text[i])) {

           digits += text[i];

       }

   }

   std::cout << letters << digits << std::endl;

}

void sortStringAlphabetically(char* text) {

   std::sort(text, text + strlen(text));

   std::cout << text << std::endl;

}

void moveDigitsToFront(char* text) {

   std::string digits;

   std::string nonDigits;

   for (int i = 0; i < strlen(text); i++) {

       if (isdigit(text[i])) {

           digits += text[i];

       }

       else {

           nonDigits += text[i];

       }

   }

   strcpy(text, digits.c_str());

strcat(text, nonDigits.c_str());

std::cout << text << std::endl;

}

void removeCharacters(char* text, const char* characters) {

int len = strlen(characters);

for (int i = 0; i < len; i++) {

   char* pos = strchr(text, characters[i]);

   while (pos != nullptr) {

       memmove(pos, pos + 1, strlen(pos));

       pos = strchr(text, characters[i]);

   }

}

std::cout << text << std::endl;

}

int main() {

char text[MAX_SIZE];

std::cout << "Enter a string: ";

std::cin.getline(text, MAX_SIZE);

printLongestShortestWord(text);

printWordsWithoutVowels(text);

printWordsWithSingleDigit(text);

printWordsMatchingFirstWord(text);

char rearrangedText[MAX_SIZE];

strcpy(rearrangedText, text);

rearrangeString(rearrangedText);

char sortedText[MAX_SIZE];

strcpy(sortedText, text);

sortStringAlphabetically(sortedText);

char movedDigitsText[MAX_SIZE];

strcpy(movedDigitsText, text);

moveDigitsToFront(movedDigitsText);

char removedCharactersText[MAX_SIZE];

strcpy(removedCharactersText, text);

const char* charactersToRemove = ".,;:!"; // Здесь можно указать символы, которые нужно удалить

removeCharacters(removedCharactersText, charactersToRemove);

system("pause");

return 0;

}

Программа принимает ввод строки от пользователя и выполняет указанные задания. Каждая функция реализует одно из заданий и выводит соответствующий результат.

Вам также потребуется добавить необходимые заголовочные файлы в начало программы:

```cpp

#include <iostream>

#include <cstring>

#include <cctype>

#include <algorithm>

Похожие вопросы
Предмет: Английский язык, автор: lera2016tis