Как посчитать количество слов в строке паскаль
Перейти к содержимому

Как посчитать количество слов в строке паскаль

  • автор:

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

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

str — строка;
len — длина строки;
count — счетчик слов в строке.

Алгоритм решения задачи:

  1. Измеряем длину введенной пользователем строки.
  2. Устанавливаем счетчик слов в значение 0.
  3. В цикле посимвольно перебираем строку. Если очередной символ является пробелом, увеличиваем счетчик слов.
  4. Поскольку в цикле не было учтено последнее слово (после него нет пробела), мы должны после цикла увеличить счетчик слов на единицу. Однако, если была введена пустая строка, то этого делать не надо. Поэтому перед увеличением счетчика добавляем проверку, что длина строки больше нуля.

Программа на языке Паскаль:

var str: string; len, count, i: integer; begin readln(str); len := length(str); count := 0; for i := 0 to len do if str[i] = ' ' then count := count + 1; if len > 0 then count := count + 1; writeln(count); end.
one two three 3

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

Второй вариант задачи: подсчитать количество слов в строке и вывести длину каждого слова.

var str, s: string; arr: array[1..255] of string; n,i,l: byte; begin readln(str); l := length(str); n := 0; s := ''; for i:=1 to l do if ((str[i] = ' ') or (i = l)) and (s <> '') then begin n := n + 1; if (i = l) and (str[i] <> ' ') then s := s + str[i]; arr[n] := s; s := ''; end else if str[i] <> ' ' then s := s + str[i]; writeln(n); for i:=1 to n do writeln(arr[i],' - ', length(arr[i])); end.

Пример выполнения программы:

 one two three 3 one - 3 two - 3 three - 5

Третий вариант задачи: Подсчитать количество слов в строке и вывести все слова в столбик.

var s, w: string; l,i: byte; count: byte; begin readln(s); l := length(s); w := ''; count := 0; for i:=1 to l do if s[i] <> ' ' then w := w + s[i] else if w <> '' then begin writeln(w); w := ''; count := count + 1; end; if w <> '' then begin // последнее слово после которого нет пробела writeln(w); count := count + 1; end; writeln(count); end.

Символы и строки в PascalABC.NET

Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).

var c1: char; var c2 := 'z'; 

Для преобразования символа c в код используется функция Ord(c) или метод Ord(c) , для обратного преобразования кода i в символ используется функция Chr(i) .

begin var c := 'ю'; Print(Ord(c)); // 1102 c.Code.Print; // 1102 Print(Chr(1102)); // ю end. 

Классический способ определить символ, следующий за данным в кодовой таблице, — это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:

Chr(Ord(c)+1) 

Аналогично определяется предыдущий символ

Для перебора всех символов в заданном диапазоне используется цикл for:

for var c := 'a' to 'z' do Print(c); 

Методы типа char

Методы, встроенные в тип char, делятся на две категории:

  • проверяющие, принадлежит ли символ указанной категории: c.IsDigit , c.IsLetter , c.IsLower , c.IsUpper
  • преобразующие символ: c.ToUpper , c.ToLower , c.ToDigit .

Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре — для не букв возвращается False .

Строки

Введение

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

Основная причина — многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.

Для устранения этой дилеммы при работе со школьниками мы не используем методы строк, которые работают с индексами, индексируемыми с нуля. Для них существуют эквивалентные замены внешними функциями, которые предполагают, что строки индексируются с 1.

Индексация строк

Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам — s[i] .

begin var s: string; s := 'тор'; Print(s[1],s[2],s[3]); end. 

Символы строк можно менять:

begin var s := 'пир'; s[1] := 'м'; Print(s); // мир end. 

Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца

begin var s := 'мир'; s[^1] := 'г'; Print(s); // миг end. 

Циклы по строкам

begin var s := 'привет'; for var i:=1 to s.Length do s[i] := Chr(Ord(s[i])+1); Print(s); end. 
foreach var c in s do Print(c); 

Операции +, *n и in

Строки можно складывать и умножать на целое положительное число

Пример. Генерация строки ‘abcdefghijklmnopqrstuvwxyz’

Идея. Начать с пустой строки. Всякий раз в цикле добавлять к строке символы от ‘a’ до ‘z’

begin var s := ''; for var c := 'a' to 'z' do s += c; end. 

Методы Count, CountOf, Where

Чтобы посчитать количество символов в строке, удовлетворяющих определённому условию, используется метод Count. Если нужно посчитать, сколько раз встречается определенный символ, используется более простой метод CountOf

begin var s := 'абракадабра'; s.CountOf('а').Print; s := 'а123бр45а67к89адабра'; s.Count(c -> c.IsDigit).Print; end. 

Если в строке надо отфильтровать только определенные символы, используется метод Where. Он возвращает последовательность символов, которую можно назад преобразовать к строке, используя метод JoinToString:

begin var s := 'а123бр45а67к89адабра'; s := s.Where(c -> c.IsLetter).JoinToString; end. 

s.ToWords и разбиение строки на слова

Метод s.ToWords разбивает строку на массив слов, используя пробел в качестве разделителя. Полученный массив можно преобразовать и слить в строку, используя метод JoinToString:

begin var s := 'как однажды жак звонарь головой сломал фонарь'; var a := s.ToWords; Sort(a); s := a.JoinToString end. 

По умолчанию JoinToString разделяет слова пробелами, но можно задать другой разделитель:

 s := a.JoinToString(', ') 

Функция Pos и процедуры Delete, Insert

Pos(subs,s) возвращает позицию первого вхождения подстроки subs в сторке s или 0 если подстрока не найдена

Pos(subs,s,from) начинает искать подстроку в строке с позиции from .

Следующий код выводит позиции всех вхождений s1 в s:

begin var s := 'абракадабра'; var s1 := 'бра'; var p := Pos(s1,s); while p>0 do begin Print(p); p := Pos(s1,s,p+s1.Length); end; end. 

Следующий код удаляет в строке слово Python и вставляет на его место PascalABC.NET:

begin var s := 'Язык Python - мой любимый язык программирования'; Delete(s,6,6); // удалить с 6 позиции 6 символов Insert('PascalABC.NET',s,6); Print(s) end. 

То же самое можно сделать с помощью метода Replace:

begin var s := 'Язык Python - мой любимый язык программирования'; s.Replace('Python','PascalABC.NET'); Print(s) end. 

©2024 PascalABCNET Team. All rights reserved.
Page last updated: 19.12.2020
Site last generated: Mar 19, 2024

как посчитать количество слов в строке?

Author24 — интернет-сервис помощи студентам

Посчитать количество слов в первой строке файла
Если в строке файла больше 4 слов , то вывести в другой файл информацию об этом.

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

Символьные массивы: посчитать количество слов в строке и вывести длину каждого слова
Помогите написать программу, условие такое: посчитайте количество слов в строке и выведите длину.

Посчитать количество слов в строке
Строка содержит предложение. Нужно определить количество слов в этом предложении. Помогите с этой.

3310 / 1372 / 110

Регистрация: 28.04.2009

Сообщений: 4,822

если только пробел

1 2 3 4 5 6 7 8 9 10
var s:string; k,i:integer; begin writeln('строка:'); readln(s); s:=' '+s; for i:=1 to length(s) do if s[i]=' ' then k:=k+1; writeln(k); end.

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

Author24 — интернет-сервис помощи студентам

Строка содержит предложение. Нужно определить количество слов в этом предложении. Помогите с этой траблой пожалуйста.

PS. Я совсем тугой, если не могу это сделать? 9 класс уже как-никак, занимаюсь по «Песням. «;

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

В заданной строке посчитать количество слов МАМА
1.В заданной строке посчитать количество слов МАМА. Заранее всем спасибо. ))))

№1. В строке посчитать количество слов,начинающихся с буквы «ф».
помогите пожалуйста №1. В строке посчитать количество слов, начинающихся с буквы «ф». №2.

Строки. Посчитать в строке количество слов, начинающихся на «Ав».
Решите пожалуйста Посчитать в строке количество слов, начинающихся на «Ав». работать со строками.

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

Регистрация: 01.12.2014
Сообщений: 19
Залишається тільки перекласти .

1 2 3 4 5 6 7 8 9
var d:string; i:integer; k:integer; begin write('Введіть вираз:'); read(d); for i:=1 to length(d) do if d[i]=' ' then k:=k+1; writeln('Кількість слів в виразі:',k+1); end.

9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,012

Лучший ответ

Сообщение было отмечено Marsht как решение

Решение

Если между словами может быть по несколько пробелов:

1 2 3 4 5 6 7 8 9 10
var d: string; i, k: integer; begin write('Выражение:'); readln(d); d := ' ' + d; for i := 1 to length(d) - 1 do if (d[i] = ' ') and (d[i + 1] <> ' ') then k := k + 1; writeln('Количество слов в выражении:', k); end.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Посчитать количество слов в тексте и длину слов
В программу должен вводиться текст. Нужно: Посчитать кол-во слов в тексте и длину слов и вывести.

Посчитать количество слов в предложении
пожалуйста! нужно дописать полностью, чтобы код стал рабочим … a:=’ ‘+a; for i:=1 to.

Ввести текст и посчитать количество слов
Задача: ввести текст. нужно: посчитать кол-во слов в нем. помогите пожалуйста

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

Посчитать количество слов в первой строке файла
Если в строке файла больше 4 слов , то вывести в другой файл информацию об этом.

Или воспользуйтесь поиском по форуму:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *