В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
kek22821
kek22821
01.04.2020 13:57 •  Информатика

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

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

Показать ответ
Ответ:
Senavn
Senavn
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;

}

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота