Виконати завдання c++ використовуючи функції для роботи з рядками
1 задача:Задано деякий рядок символів. Визначити останню позиції в тексті
введеного символу. Якщо символу немає, вивести відповідне
повідомлення.
2 задача:Задано два тексти, слова в яких розділені пробілами і розділовими знаками.
Розробити програму, яка створює третій текст із слів першого тексту, які
входять у другий текст, розділяючи їх пробілами.
Ответы
Сделал программу в которой заложено выполнение сразу 2 задач.
#include <iostream>
#include <cstring>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
int main() {
int choice;
do {
std::cout << "Выберите задачу (1, 2, 0 - выход): ";
std::cin >> choice;
if (choice == 1) {
std::cout << "Задача 1: Задана строка символов. Определить последнюю позицию в тексте введенного символа." << std::endl;
std::cout << "Введите строку символов: ";
char inputString[100];
std::cin.ignore();
std::cin.getline(inputString, sizeof(inputString));
std::cout << "Введите символ для поиска: ";
char searchChar;
std::cin >> searchChar;
char *lastOccurrence = strrchr(inputString, searchChar);
if (lastOccurrence != nullptr) {
std::cout << "Последняя позиция символа '" << searchChar << "': " << (lastOccurrence - inputString) << std::endl;
} else {
std::cout << "Символ '" << searchChar << "' отсутствует в строке." << std::endl;
}
} else if (choice == 2) {
std::cout << "Задача 2: Заданы два текста. Создать третий текст из слов первого текста, входящих во второй текст." << std::endl;
std::cout << "Введите первый текст: ";
std::string text1;
std::cin.ignore();
std::getline(std::cin, text1);
std::cout << "Введите второй текст: ";
std::string text2;
std::getline(std::cin, text2);
std::istringstream stream1(text1);
std::istringstream stream2(text2);
std::string word;
std::vector<std::string> words1, words2;
while (stream1 >> word) {
words1.push_back(word);
}
while (stream2 >> word) {
words2.push_back(word);
}
std::vector<std::string> resultWords;
for (const auto &word1 : words1) {
if (std::find(words2.begin(), words2.end(), word1) != words2.end()) {
resultWords.push_back(word1);
}
}
std::ostringstream resultStream;
for (const auto &resultWord : resultWords) {
resultStream << resultWord << " ";
}
std::string resultText = resultStream.str();
if (!resultText.empty()) {
std::cout << "Третий текст из слов первого текста, входящих во второй текст:\n" << resultText << std::endl;
} else {
std::cout << "Слова первого текста не встречаются во втором тексте." << std::endl;
}
} else if (choice != 0) {
std::cout << "Некорректный выбор. Выберите 1, 2 или 0 для выхода." << std::endl;
}
} while (choice != 0);
return 0;
}
