Паскаль как посчитать количество букв в слове?

Раньше программа подсчитывала общее количество букв и слов в строке. Сейчас пытаюсь сделать так, чтобы он определял сколько слов с четным количеством букв. Именно по характеру. Подскажите как закончить.

program test;
var
  c : char;
  i : integer;
  numOfChar : integer;
  rem : integer;
begin
  i := 1;
  numOfChar := 0;
  rem := 0;
  c := ' ';
  writeln('Enter your string');
  read(c);
  
  while (c <> #13) and (c <> #10) do
  begin
    if c <> ' ' then inc(numOfChar)
    else inc(i);

    rem := numOfChar mod 2;
    read(c);     
  end;

  writeln('count of words: ', i);
  writeln('count of chars: ', numOfChar);
  writeln('rem: ', rem)
end.

Вот код, который я не закончил.

Используйте «нечетный()», чтобы проверить, является ли число четным.

Marco van de Voort 07.12.2022 13:49

Мне кажется, что в вашем коде есть логическая ошибка. Введите пять пробелов и <enter>, он покажет пять введенных слов! Само по себе пространство ненадежно. Введите переменную, например inWord: boolean, и инициализируйте ее значением false. Когда пользователь вводит пробел char <>, установите его true и увеличьте счетчик символов. Когда пользователь вводит char = пробел и inWord = true, установите его false и увеличьте words. На этом этапе вы также можете проверить, является ли счетчик символов четным или нет.

Tom Brunberg 07.12.2022 13:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите считать слова, вам нужно знать, когда пробелы имеют смысл, а когда нет. Рассмотрим, например, строку ' hello world '.

Если вы войдете в свой цикл по строке с логическим именем in_word, установленным в false. Мы установим его в true только тогда, когда обнаружим непробельный символ. У нас также есть целые значения word_count и word_length. Оба установлены на 0. Мы будем увеличивать word_count, когда in_word истинно, и мы обнаружим пробел.

Char:        ' '
in_word:     false
word_count:  0
word_length: 0

Char:        ' '
in_word:     false
word_count:  0
word_length: 0

Char:        'h'
in_word:     false -> true
word_count:  0
word_length: 1

Char:        'e'
in_word:     true
word_count:  0
word_length: 2

Char:        'l'
in_word:     true
word_count:  0
word_length: 3

Char:        'l'
in_word:     true
word_count:  0
word_length: 4

Char:        'o'
in_word:     true
word_count:  0
word_length: 5

Char:        ' '
in_word:     false
word_count:  1
word_length: 0

Char:        'w'
in_word:     false -> true
word_count:  1
word_length: 1

Char:        'o'
in_word:     true
word_count:  1
word_length: 2

Char:        'r'
in_word:     true
word_count:  1
word_length: 3

Char:        'l'
in_word:     true
word_count:  1
word_length: 4

Char:        'd'
in_word:     true
word_count:  1
word_length: 5

Char:        ' '
in_word:     false
word_count:  2
word_length: 0
begin
  in_word := false;
  word_count := 0;
  word_length := 0;

  for i := 1 to length (input) do
  begin
    if in_word && input[i] = ' ' then
      begin ... end
    else if in_word then
      begin ... end
    else if input[i] = ' ' then
      begin ... end
    else
      begin ... end
  end

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

Крис, я понял твою мысль. Но я не могу завершить код, который вы написали. Для меня это очень сложно в данный момент. Не могли бы вы помочь более подробно?

Илья 12.12.2022 11:27

Другие вопросы по теме