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

Виконати завдання c++ використовуючи функції для роботи з рядками
1 задача:Задано деякий рядок символів. Визначити останню позиції в тексті
введеного символу. Якщо символу немає, вивести відповідне

повідомлення.

2 задача:Задано два тексти, слова в яких розділені пробілами і розділовими знаками.

Розробити програму, яка створює третій текст із слів першого тексту, які

входять у другий текст, розділяючи їх пробілами.​

Ответы

Автор ответа: salpsx
1

Сделал программу в которой заложено выполнение сразу 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;

}

Приложения:

salpsx: жду лучший ответ
blackzenya: идиот
blackzenya: на було от дельно
blackzenya: (за идиота не бань)
Похожие вопросы