Количество слов в строке

Задача

Вводится строка, состоящая из слов, разделенных пробелами. Требуется посчитать количество слов в ней.

Пояснение к задаче и алгоритм решения

  1. Введем счетчик слов и переменную-флаг, сигнализирующую, находимся ли мы внутри слова или нет.
  2. Если очередной символ не пробел, и флаг показывает, что мы не внутри слова, то следует увеличить переменную-счетчик слов и изменить флаг.
  3. Иначе если текущий символ пробел, то установить флаг в значение "вне слова". (Когда символ не пробел, и мы находимся внутри слова, то ничего делать не надо.)

Исходный код на языке программирования Pascal

var
    str: string;
    i, count: byte;
    flag: boolean;
begin
    readln(str);
    count := 0;
    flag := false;
    for i:=1 to length(str) do begin
        if (str[i] <> ' ') and (flag = false) then begin
            count := count + 1;
            flag := true;
        end
        else
            if str[i] = ' ' then
                flag := false;
    end;
    writeln(count);
end.

Пример(ы) выполнения программы на языке Pascal

  one two    tree?
3

Исходный код на языке программирования C

#include <stdio.h>
 
main() {
    char str[255];
    int i,count,flag;
    gets(str);
    count = 0;
    flag = 0;
    for (i=0; str[i]!='\0'; i++)
        if (str[i] != ' ' && flag == 0) {
            count += 1;
            flag = 1;
        } else
            if (str[i] == ' ') flag = 0;
    printf("%d\n", count);
}

Исходный код на языке программирования Python

# 1-й вариант ("классический"):

s = input()
count = 0
flag = 0
for i in range(len(s)):
    if s[i] != ' ' and flag == 0:
        count += 1
        flag = 1
    else:
        if s[i] == ' ':
            flag = 0
print(count)

# 2-й вариант (через преобразование в список):

s = input()
s = s.split()
l = len(s)
print(l)

Особенности решения на языке программирования Python

Метод split() разбивает строку по пробелам (по умолчанию) или символам, которые передаются как аргументы. Возвращает список.

Исходный код на языке программирования КуМир

алг количество слов
нач
  лит s
  цел i, count, flag
  ввод s
  count := 0
  flag := 0
  нц для i от 1 до длин(s)
    если s[i] <> " " и flag = 0 то
      count := count + 1
      flag := 1
     иначе
      если s[i] = " " то
        flag := 0
      все
    все
  кц
  вывод count
кон

Исходный код на языке программирования Basic

input s$
c = 0
f = 0
for i = 1 to length(s$)
        b$ = mid(s$,i,1)
        if b$ <> " " and f = 0 then
                c = c + 1
                f = 1
        else
                if b$ = " " then f = 0
        endif
next i
print c

Особенности решения на языке программирования Basic

В Basic-256 нет возможности обращаться к символам строки как элементам массива. Поэтому приходится использовать функцию mid(), которая извлекает подстроку. Первый ее аргумент - строка, второй - номер первого символа подстроки, третий - длина подстроки.

Тема

Строки

Уровень сложности

Средний

Дата публикации