Подсчитать количество предложений и количество слов в предложении - Pascal
Формулировка задачи:
Слова в предложении разделены пробелом. В конце предложения точка. Подсчитать количество предложений и количество слов в предложении. (ввод предложений с клавиатуры)
Проблема с кодом:
Количество предложений считает правильно а слова не считает...в чем загвоздка?
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s:string;
a,b,i:integer;
begin
writeln('Vvedite');
write(s);
readln(s);
a:=0;
b:=1;
for I := 0 to length(s) do
if s[i]='.' then
begin
a:=a+1 ;
end;
if s[i]=' ' then
begin
b:=b+1 ;
end;
writeln('Otvet');
writeln('predl=',a);
writeln('slov=',b);
readln;
end.Решение задачи: «Подсчитать количество предложений и количество слов в предложении»
textual
Листинг программы
var
s: String;
i, countWord, countSent: Byte;
inWord: Boolean;
begin
countSent := 0; countWord := 0; inWord := False;
Write('Input string: '); ReadLn(s);
for i := 1 to Length(s) do
begin
if ((inWord) And (s[i] = ' '))
then
begin
Inc(countWord);
end;
if (s[i] = '.')
then
begin
Inc(countSent);
if (inWord)
then
Inc(countWord);
WriteLn(countSent, ' sentence: ', countWord, ' words.');
countWord := 0;
end;
inWord := Not (s[i] in [' ', '.']);
end;
end.
Объяснение кода листинга программы
- Объявляется переменная
sтипа String, и переменныеi,countWord,countSentтипа Byte, а также переменнаяinWordтипа Boolean. - Устанавливаются начальные значения:
countSentравен 0,countWordравен 0,inWordравен False. - Выводится приглашение
Input string:, после чего пользователь вводит строку, которая присваивается переменнойs. - Запускается цикл по строке
s. Для каждого символа строки выполняются следующие действия:- Если
inWordравно True и текущий символs[i]равен пробелу, то увеличиваем значениеcountWordна 1. - Если текущий символ
s[i]равен точке '.', увеличиваем значениеcountSentна 1, еслиinWordравно True, увеличиваем значениеcountWordна 1, после чего выводим количество предложений и слов для текущего предложения и сбрасываемcountWordв 0. - Переменной
inWordприсваивается значение, обратное тому, является ли символs[i]пробелом или точкой.
- Если
- Код завершается.