Задачка по c++ -

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

daryalife1998 daryalife1998    1   05.04.2020 17:30    0

Ответы
kristinandrosov kristinandrosov  06.08.2020 07:49

/*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;

}

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика