Cümlələrin sayı#912

Cümlələrin sayı (Həll təhlili)

Cümlə bir nöqtə, təəccübləndirici işarə və ya sual işarəsi ilə bitə bilər. Cümlənin sonunda bir neçə nida işarəsi ola bilər - məsələn, üç nöqtə və ya üç təəccübləndirici işarə. Buna görə, cümlənin sonunu belə izləyəcəyik: cari simvol '.', '!', '?' simvollarından biri olmalı və əvvəlki simvol olmamalıdır. Yəni, daxil edilmiş mətn qədər cümlə var, ikincisi {'.', '!', '?'} dəstinə aid olan və birincisi olmayan yanaşı simvolların cütləri qədər.

Alqoritm İmplementasiyası

Giriş məlumatlarını simvol-simvol oxuyuruq. cnt dəyişənində cümlələrin sayını hesablayırıq.

prev = cnt = 0;
while(scanf("%c",&ch), ch != '\n')
{
    // `ch` dəyişəni cari simvolu, və `prev` əvvəlki simvolu saxlayır. Üç nida işarəsindən birinə çatdıqda və əvvəlki simvol onlardan biri olmadıqda cümlənin bitdiyi hesab edilir.
    if ((ch == '.' || ch == '!' || ch == '?') && !(prev == '.' || prev == '!' || prev == '?')) cnt++;
    prev = ch;
}
// Cümlələrin sayını çıxarırıq.
printf("%d\n",cnt);

Java İmplementasiyası

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);
    }
}