Вопрос задан 11.07.2023 в 08:57. Предмет Информатика. Спрашивает Бокова Даша.

Задачка по c++ - 100 баллов Строка символов содержит несколько предложений m каждое из которых

заканчивается точкой, восклицательным или вопросительным знаком. Определить количество предложений и длину каждого из них в символах.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Маслак Ангелина.

/*last_sent_end - индекс конца последнего найденного на данный момент предложения. Т.к. отсчет в C++ с 0, то начальное значение -1. Просматривается строка посимвольно. Встречен один из символов - счетчик m увеличивается, длина предложения вычисляется как разность текущего индекса и индекса конца предыдущей строки, и заносится в  std::vector<int> arr_of_length. В last_sent_end сохраняется индекс найденного символа - индекс конца последней найденной строки. Случаи некорректного ввода не обработаны.*/

#include <iostream>

#include <vector>

#include <string>

int main()

{

int m = 0, last_sent_end = -1;

std::string str;

std::vector<int> arr_of_length;

std::cout << "Input string: ";

std::getline(std::cin, str);

for (int i = 0; i < static_cast<int>(str.length()); i++)

{

 const char symb = str[i];

 if (symb == '!' || symb == '?' || symb == '.')

 {

  m++;

  arr_of_length.push_back(i - last_sent_end);

  last_sent_end = i;

 }

}

std::cout << "m = " << m << '\n';

for (int sent_length : arr_of_length)

{

 std::cout << sent_length << " ";

}

return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример кода на C++, который решает данную задачу:

cpp
#include <iostream> #include <string> #include <vector> int main() { std::string input; std::cout << "Введите строку с предложениями: "; std::getline(std::cin, input); std::vector<std::string> sentences; std::string currentSentence; for (char c : input) { currentSentence += c; if (c == '.' || c == '!' || c == '?') { sentences.push_back(currentSentence); currentSentence.clear(); } } if (!currentSentence.empty()) { sentences.push_back(currentSentence); } std::cout << "Количество предложений: " << sentences.size() << std::endl; for (size_t i = 0; i < sentences.size(); ++i) { std::cout << "Длина предложения " << i+1 << ": " << sentences[i].size() << " символов" << std::endl; } return 0; }

Программа сначала считывает строку с предложениями от пользователя. Затем она проходит по каждому символу в строке, строит предложение до тех пор, пока не встретит один из символов '.', '!' или '?', после чего добавляет это предложение в вектор sentences. После обработки всех символов строки, программа выводит количество предложений и длину каждого предложения в символах.

0 0

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

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос