Подсчет количества слов в строке

Задача: 

Подсчитать количество слов во введенной пользователем строке.

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

Описание переменных: 

str - строка;
i - счетчик;
count - подсчет количества слов.

Алгоритм решения задачи: 
  1. Измеряем длину введенной пользователем строки.
  2. Если длина не нулевая, то это значит, что есть хотя бы одно слово.
  3. Перебираем каждый символ строки.
  4. Если очередной символ является пробелом, то увеличиваем счетчик слов.
Программа на языке Паскаль: 

var
        str: string;
        i, count: integer;
begin
        write('Your string: ');
        readln(str);
 
        i := length(str);
        if i > 0 then begin
                count := 1;
                while i > 0 do begin
                        if str[i] = ' ' then
                                count := count + 1;
                        i := i - 1;
                end;
        end
        else
                count := 0;
 
 
        writeln('Number of words: ', count);
readln;
end.

Примечания: 

Программа не будет корретно работать, если слова разделены больше, чем одним пробелом.

Комментарии

помогите

программа которая определяет количество слов,которые начинаются с буквы И.

помогите написать пожалуйста

помогите написать пожалуйста программу "написать программу фильтр которая при нажати любых клавиш выводит на экран только буквы и цифры"

помогите написать программу ,

помогите написать программу , в которой требуется ввести предложение ,а затем выдать его на экран ,поменяв порядок следования слов в предложении

Паскаль

Подсчитать количество слов в строке (фразе). Разделителями слов являются:
- пробелы;
- знаки препинания;
- знаки арифметических операций;
- скобки(круглые, квадратные, фигурные).

Считает независимо от количества пробелов

var s:string;
 
procedure Count(st:string);
var i,k:byte;
 
begin
   i:=1; k:=0;
   while i<> length(st) do begin
      if st[i]=' ' then
         inc(i)
      else begin
         while (st[i]<>' ') and (i<>length(st)) do
            inc(i);
         inc(k);
      end;
   end;
   write('k=',k);
end;
 
begin
   write('Write s:');
   readln(s);
   Count(s);
   readln;
end.

Ошибка в проге

Попробуйте ввести несколько пробелов сразу- и количество слов будет выведено неверно

Да, в (if str[i] = ' ' then)

Да, в (if str[i] = ' ' then) можно указать и or str[i] = ' ', и str[i] = ' ', и str[i] = ' '
тогда будет и с несколькими пробелами работать...

Вот мой вариант

Не важно сколькими пробелами разделены слова, все равно найдет:

procedure Error;
  begin
    writeln('you did not enter any string');
    readln;
    halt;
  end;
var
  j, number, i:integer;
  str:string;
begin
readln(str);
number:=0;
if str='' then Error;
if (str[1]=' ') then delete(str, 1, 1) else inc(number);
for i:=1 to length(str) do
  begin
    if (str[i]=' ') then
      begin
        inc(number);
        repeat
          if (str[i+1]=' ') then
            begin
              delete(str, (i+1), 1);
            end;
        until ((str[i+1])<>' ');
      end;
 
  end;
writeln(number);
readln;
end.

Вопрос по теме:

Подскажите пожалуйста как прописать так что бы тире не считалось словом?

Дана строка символов,

Дана строка символов, содержащая не более 255 цифр. Необходимо вычислить сумму цифр числа.

program asd; uses crt; var

program asd;
uses crt;
var st:string;
i,p:integer;
begin
i:=1;
p:=0;
write('st=');
readln(st);
for i:=1 to length(st) do
if ((st[i-1]<>' ')and(st[i]=' ')) then
p:=p+1;
if ((i=length(st))and(st[i]<>' ')) then
p:=p+1;
writeln(p);
end.

А если больше,чем одним

А если больше,чем одним пробелом?

Не будет считать

Не будет считать

помогите написать код

вводится строка и целое число.посчитать кол-во слов в этой строке длина которых меньше этого числа

Помогите мне нужно написать

Помогите мне нужно написать программу которая подсчитывает сколько строк в файле, сколько слов в каждой строке и сколько букв в слове, то есть создать файл написать в нем что-то, потом у нас должно будет должно так получится
1 строка, 2 слова, 1-5 букв, 2-3 букв и так до конца!!!!!!

Задачи

Нужно решить задачу( В исходной строке отсчитать количествоуказанных символов. Больше ничего не дано( Помогите пожалуйста

Мне кажется такая программа лучше.

Тут не важно сколько пробелов. Все равно все ок будет считать.
program asd;
uses crt;
var st:string;
i,p:integer;
begin
i:=1;
p:=0;
write('st=');
readln(st);
for i:=1 to length(st) do
if ((st[i-1]<>' ')and(st[i]=' ')) then
p:=p+1;
if ((i=length(st))and(st[i]<>' ')) then
p:=p+1;
writeln(p);
end.

можно еще проще

// найти слово в строке, стоящее под определенным номером
 
VAR
 s:string;
 i, count: byte;
BEGIN
 readln(s);
 s:= s+ ' ' ; // чтобы считать последнее слово
 
 for i:=1 to length(s) do
  if (s[i]=' ')and(s[i-1]<>' ') then
   count:= count+1;
 
 writeln(count);
END. 

помоги

Напишите программу, которая считает количество слов в файле input.txt . Словом называется последовательность непробельных символов, ограниченная пробелами или границами строки. Результат нужно записать в файл output.txt .

Входные данные
Файл input.txt содержит произвольный текст.

Выходные данные
В файл output.txt нужно вывести количество слов в этом тексте.

Примеры
входные данные
a aba babra
cadabra mymra
выходные данные
5