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

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

  1. Введем счетчик слов и переменную-флаг, сигнализирующую, находимся ли мы внутри слова или нет.
  2. Если очередной символ не пробел, и флаг показывает, что мы не внутри слова, то следует увеличить переменную-счетчик слов и изменить флаг.
  3. Иначе если текущий символ пробел, то установить флаг в значение "вне слова". (Когда символ не пробел, и мы находимся внутри слова, то ничего делать не надо.)
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.
  one two    tree?
3
#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);
}
# 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)

Метод 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
кон
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-256 нет возможности обращаться к символам строки как элементам массива. Поэтому приходится использовать функцию mid(), которая извлекает подстроку. Первый ее аргумент - строка, второй - номер первого символа подстроки, третий - длина подстроки.