В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
никусь2222
никусь2222
03.06.2021 06:10 •  Информатика

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

Показать ответ
Ответ:
Amshvd
Amshvd
09.07.2020 17:17
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 := p
end;

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 := p
end;

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.
0,0(0 оценок)
Ответ:
nif4
nif4
09.07.2020 17:17
ГотовоЭто если между словами всегда один пробел.
UPD.Заменил ,теперь не важно сколько пробелов
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота