• ПАСКАЛЬ. Срочно!

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

Ответы 7

  • Хорошее решение, короткое. Только врет. Вот для такой строки тестовой "Это не просто строка, это строка с многими пробелами " говорит, что слов 10, хотя их 9.
    • Автор:

      kokoczpo
    • 5 лет назад
    • 0
  • Замечание к предыдущему комментарию: Каждое слово, включая первое и последнее, было с обоих сторон окаймлено пробелами в количестве от 2 до 7, но при помещении сюда этот Сервис пробелы скушал.
    • Автор:

      roderick
    • 5 лет назад
    • 0
  • А когда я ввел --это--строка-- (тут - обозначает пробел), программа вообще сказала, что слов 4
  • Да ,что -то я напутал
  • Да потому что нельзя в такой короткой форме охватить все случаи
  • Готово.................Это если между словами всегда один пробел.UPD.Заменил ,теперь не важно сколько пробелов
  • const  Blanks = [' '];function PosBlank(s: string; pn, pk: integer): integer;{   Ищет в строке s в позициях от pn до pk пробельный символ.  Возвращает его позицию в строке или ноль, если таковой символ не найден.  Использует подмножество пробельных символов Blanks, что позволяет определять  произвольный набор пробельных символов (например, табуляцию и т.д.)}var  p: integer;  flag: boolean;begin  p := pn;  flag := true;  while flag and (p <= pk) do  begin    if s[p] in Blanks then flag := false    else p := p + 1  end;  if p > pk then PosBlank := 0  else PosBlank := pend;function PosNonBlank(s: string; pn, pk: integer): integer;{   Ищет в строке s в позициях от pn до pk непробельный символ.  Возвращает его позицию в строке или ноль, если таковой символ не найден.  Использует подмножество пробельных символов Blanks, что позволяет определять  произвольный набор пробельных символов (например, табуляцию и т.д.)}var  p: integer;  flag: boolean;begin  p := pn;  flag:=true;  while flag and (p <= pk) do  begin    if s[p] in Blanks then p := p + 1    else flag := false  end;  if p > pk then PosNonBlank := 0  else PosNonBlank := pend;var  s: string;  i, l, k: integer;begin  Write('Введите строку: ');  Readln(s);  l := Length(s);  k := 0;  i := PosNonBlank(s, 1, l);  while (i>0) and (i <= l) do  begin    k := k + 1;    i := PosBlank(s, i + 1, l);    if i = 0 then i := l + 1    else i := PosNonBlank(s, i + 1, l)  end;  Writeln('Количество слов в строке равно ', k)end.
    • Автор:

      ducky6nio
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years