Подсчет количества слов в строке в Pascal
Подсчитать количество слов во введенной пользователем строке. Считаем, что слова разделяются исключительно одним пробелом, а первый и последний символы строки не являются пробелами.
Описание переменных:
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.