• Предмет: Информатика
  • Автор: Kukuwka0Ha0DepeBe
  • Вопрос задан 14 дней назад

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


dimonchop: Робота вийшла на 257 рядків коду, так розумію курсова або щось в цьому плані, але це робота на високий рівень, яка є не базоплатною.

Ответы

Ответ дал: falusytubejaste
2

#include <iostream>

#include <cstring>

#include <cctype> // для функції isdigit()

using namespace std;

int main() {

char str[256];

cout << "Введіть текст (максимум 255 символів): ";

cin.getline(str, 256);

// Змінні для завдання 1

char longest[256], shortest[256];

int longest_len = 0, shortest_len = 256;

// Змінні для завдання 2

cout << "Слова без голосних букв: ";

bool has_vowel;

// Змінні для завдання 3

cout << "Слова з однією цифрою: ";

bool has_digit;

// Змінні для завдання 4

const char* first_word = strtok(str, " ");

cout << "Слова, які збігаються з першим словом: " << first_word << " ";

// Змінні для завдання 5

char letters[256], digits[256];

int letters_len = 0, digits_len = 0;

// Змінні для завдання 6

char sorted_str[256];

strcpy(sorted_str, str);

for (int i = 0; i < strlen(sorted_str) - 1; i++) {

for (int j = i + 1; j < strlen(sorted_str); j++) {

if (sorted_str[j] < sorted_str[i]) {

char temp = sorted_str[i];

sorted_str[i] = sorted_str[j];

sorted_str[j] = temp;

}

}

}

cout << "Рядок з відсортованими буквами: " << sorted_str << endl;

// Змінні для завдання 7

char digits_first[256], non_digits[256];

int digits_first_len = 0, non_digits_len = 0;

// Змінні для завдання 8

char to_remove[] = {'.', ',', ';', ':', '!', '?', ' ', '\t'}; // символи, які треба видалити

cout << "Рядок без зазначених символів: ";

int i = 0, j = 0; // індекси для зсуву

while (str[i]) { // поки не досягли кінця рядка

bool remove_char = false;

for (int k = 0; k < 8; k++) { // перевіряємо, чи потрібно видаляти цей символ

if (str[i] == to_remove[k]) {

remove_char = true;

break;

}

}

if (!remove_char) { // якщо не потрібно видаляти, то залишаємо його на місці

str[j] = str[i];

j++;

}

i++;

}

str[j] = '\0'; // ставимо кінцевий символ на позицію j

cout << str << endl;

// Розбиваємо рядок на слова

char* word = strtok(str, " ");

while (word) {

has_vowel = false;

has_digit = false;

// Завдання 1: знаходимо найдовше і найкоротше слово

if (strlen(word) > longest_len) {

longest_len = strlen(word);

strcpy(longest, word);

}

if (strlen(word) < shortest_len) {

shortest_len = strlen(word);

strcpy(shortest, word);

}

// Завдання 2: виводимо слова без голосних букв

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

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

word[i] == 'y' || word[i] == 'A' || word[i] == 'E' || word[i] == 'I' || word[i] == 'O' || word[i] == 'U' || word[i] == 'Y') {

has_vowel = true;

break;

}

}

if (!has_vowel) {

cout << word << " ";

}

// Завдання 3: виводимо слова з однією цифрою

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

if (isdigit(word[i])) {

if (has_digit) { // якщо в слові більше однієї цифри, не будемо його виводити

break;

}

has_digit = true;

}

}

if (has_digit && !isdigit(word[1])) { // не виводимо числа, що починаються з 0

cout << word << " ";

}

// Завдання 4: виводимо слова, які збігаються з першим словом

if (strcmp(word, first_word) == 0 && word != first_word) {

cout << word << " ";

}

// Завдання 5: перетворюємо рядок так, щоб спочатку були надруковані тільки букви, а потім тільки цифри

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

Похожие вопросы