Подсчет количества слов в строке
Подсчитать количество слов во введенной пользователем строке. Считаем, что слова разделяются исключительно одним пробелом, а первый и последний символы строки не являются пробелами.
Описание переменных:
str - строка;
len - длина строки;
count - счетчик слов в строке.
Алгоритм решения задачи:
- Измеряем длину введенной пользователем строки.
- Устанавливаем счетчик слов в значение 0.
- В цикле посимвольно перебираем строку. Если очередной символ является пробелом, увеличиваем счетчик слов.
- Поскольку в цикле не было учтено последнее слово (после него нет пробела), мы должны после цикла увеличить счетчик слов на единицу. Однако, если была введена пустая строка, то этого делать не надо. Поэтому перед увеличением счетчика добавляем проверку, что длина строки больше нуля.
Программа на языке Паскаль:
var
str: string;
len, count, i: integer;
begin
readln(str);
len := length(str);
count := 0;
for i := 0 to len do
if str[i] = ' ' then
count := count + 1;
if len > 0 then
count := count + 1;
writeln(count);
end.
Пример выполнения:
one two three
3
Примечание. Программа не будет корректно работать, если слова разделены больше, чем одним пробелом.
Второй вариант задачи: подсчитать количество слов в строке и вывести длину каждого слова.
var
str, s: string;
arr: array[1..255] of string;
n,i,l: byte;
begin
readln(str);
l := length(str);
n := 0;
s := '';
for i:=1 to l do
if ((str[i] = ' ') or (i = l)) and (s <> '') then begin
n := n + 1;
if (i = l) and (str[i] <> ' ') then s := s + str[i];
arr[n] := s;
s := '';
end
else
if str[i] <> ' ' then
s := s + str[i];
writeln(n);
for i:=1 to n do
writeln(arr[i],' - ', length(arr[i]));
end.
Пример выполнения программы:
one two three
3
one - 3
two - 3
three - 5
Третий вариант задачи: Подсчитать количество слов в строке и вывести все слова в столбик.
var
s, w: string;
l,i: byte;
count: byte;
begin
readln(s);
l := length(s);
w := '';
count := 0;
for i:=1 to l do
if s[i] <> ' ' then w := w + s[i]
else
if w <> '' then begin
writeln(w);
w := '';
count := count + 1;
end;
if w <> '' then begin // последнее слово после которого нет пробела
writeln(w);
count := count + 1;
end;
writeln(count);
end.