912. Количество
предложений
Определить
количество предложений в заданном фрагменте текста.
Вход. В одной строке задан фрагмент текста на английском языке,
количество символов в котором не превышает 250. Гарантируется, что в тексте
отсутствуют тире, дефисы, цифры и числа.
Выход. Вывести
количество предложений в фрагменте.
Пример
входа |
Пример
выхода |
Hello world! |
1 |
строки
Предложение
может завершаться одним из следующих знаков: точкой, восклицательным или
вопросительным знаком. В конце предложения могут стоять несколько знаков
препинания – например троеточие или три восклицательных знака. Поэтому конец
предложения будем отслеживать так: текущий символ должен быть одним из '.',
'!', '?', а предыдущий символ таковым являться не должен. То есть входной текст
содержит столько предложений, сколько имеется пар стоящих рядом символов, что
второй из них принадлежит множеству {'.', '!', '?'}, а первый нет.
Реализация алгоритма
Читаем посимвольно входные данные. В переменной cnt подсчитываем количество предложений.
prev = cnt = 0;
while(scanf("%c",&ch),
ch != '\n')
{
Переменная ch содержит текущий символ, а prev
предыдущий. Предложение считается законченным, если мы достигли одного из трех
знаков препинания, а предыдущий символ таковым не является.
if ((ch == '.' || ch == '!'
|| ch == '?') &&
!(prev == '.'
|| prev == '!' || prev == '?')) cnt++;
prev = ch;
}
Выводим количество предложений.
printf("%d\n",cnt);
Java реализация
import
java.util.*;
public class
Main
{
public static void
main(String[] args)
{
Scanner con = new
Scanner(System.in);
String s =
con.nextLine();
int cnt =
0;
for(int i = 0; i < s.length() - 1; i++)
{
if
((s.charAt(i+1) == '.' || s.charAt(i+1) == '!' ||
s.charAt(i+1) == '?') &&
!(s.charAt(i) == '.' ||
s.charAt(i) == '!' ||
s.charAt(i) == '?')) cnt++;
}
System.out.println(cnt);
}
}