Подсчет слов в строке
Вот вам строка, посчитайте в ней количество слов «Pascal». Чуть подумав, вы остановитесь на функции Pos , — ведь она возвращает позицию искомого слова. Но функция обнаруживает лишь первое вхождение фрагмента, а как быть с остальными? Я предлагаю постепенно разрушать исходную строку. То есть, найдя искомый фрагмент, будем удалять его из строки и снова повторять поиск. На этом и построена программа P_44_2 .
S:=’Лучший язык программирования – это PASCAL!’+
‘Изучите PASCAL! PASCAL не подведет!’;
if p>0 then begin
until p=0; < выход, если слов «PASCAL» больше нет >Writeln(‘Найдено слов PASCAL: ‘,c); Readln;
Контекстная замена
Любой текстовый редактор умеет заменять одну подстроку на другую, — это называется контекстной заменой. Устроим такую замену в строковой переменной. Итак, дана строка, содержащая несколько слов «Pascal». Заменим все вхождения слова «Pascal» словом «Паскаль» (чем не англо-русский переводчик?).
Разобравшись с предыдущей задачей, вы легко одолеете и эту. Для проверки вашего решения сравните его с моим ( P_44_3 ).
S:=’Лучший язык программирования – Pascal! ‘+
‘Изучите Pascal! Pascal не подведет!’;
if p>0 then begin
Итоги
∙ Строка родственна массиву символов. Дополнительный нулевой элемент этого массива содержит длину строки.
∙ Строка, объявленная без указания размера, по умолчанию занимает 256 байтов памяти и может содержать до 255 символов.
∙ Для экономии памяти используют строки меньшего размера. При объявлении таких строк размер указывают внутри квадратных скобок после слова STRING .
∙ В Паскале предусмотрен ряд встроенных процедур и функций, облегчающих обработку строк.
А) Напишите процедуру, переводящую все символы строки (латинские буквы) к верхнему регистру.
Б) Напишите функцию для приведения любой буквы к верхнему регистру (включая и русские). Подсказка: вспомните о таблице кодировки.
В) Напишите функцию для приведения любой буквы к нижнему регистру.
Г) Напишите собственные процедуры и функции обработки строк, повторяющие те, что встроены в Паскаль. Дайте им названия, похожие на стандартные, например: MyCopy , MyDelete и так далее.
Д) Вращение строки вправо. Напишите процедуру, перемещающую 1-й символ строки на место 2-го, 2-й — на место 3-го и т.д. Последний символ должен занять 1-е место. Примените средства обработки строк.
Е) Вращение строки влево. Напишите процедуру для перемещения 2-го символа на место 1-го, 3-го — на место 2-го и т.д. Первый символ должен стать последним.
Ж) Строка содержит несколько слов — предложение. Напишите программы для решения следующих задач.
∙ Напечатать в столбик отдельные слова введённого предложения.
∙ Определить количество слов в строке.
∙ Равномерно расставить пробелы между словами так, чтобы удлинить строку до 80 символов (исходная строка короче 80).
З) Напишите булеву функцию, определяющую, является ли строка (параметр) палиндромом. Палиндром читается одинаково в обоих направлениях.
И) Напишите булеву функцию, определяющую, можно ли из букв первого слова составить второе (например, «клавиша» и «вилка» — TRUE ). Учитывается только набор букв, а не их количество. Подсказка: примените множества.
К) Дана строка, содержащая не менее трёх символов. Найти в ней три стоящих подряд символа, дающих максимальную сумму своих кодов.
Л) В строке найти возрастающую последовательность символов наибольшей длины (сравнивайте коды символов).
М) Напишите булеву функцию, проверяющую, следуют ли символы строки по неубыванию своих кодов.
Н) Напишите функцию для шифрования строки путём перестановки её символов, расположенных на нечётных позициях: первый символ обменивается с последним, третий — с третьим от конца и т.д.
Посчитать количество слов в строке паскаль
Подсчитать количество слов во введенной пользователем строке.
Для упрощения задачи считаем, что слова разделяются исключительно одним пробелом, а первый и последний символы строки не являются пробелами.
Решение
str — строка;
i — счетчик;
count — подсчет количества слов.
Алгоритм решения задачи:
- Измеряем длину введенной пользователем строки.
- Если длина не нулевая, то это значит, что есть хотя бы одно слово.
- Перебираем каждый символ строки.
- Если очередной символ является пробелом, то увеличиваем счетчик слов.
Программа на языке Паскаль:
Программа не будет корректно работать, если слова разделены больше, чем одним пробелом.
Другой вариант задачи: подсчитать количество слов в строке и вывести длину каждого слова.
Что ты хочешь узнать?
Ответ
Для подсчёта слов в предложении, вот код:
Какая буква встречается чаще
Program Bykv;
Var s:String;
i,k1,k2:byte;
Begin
write(‘Введите строку: ‘);readln(s);
For i:=2 to Length(s)-1 do
if s[i]=s[1] then inc(k1)
else if s[i]=s[Length(s)] then inc(k2);
writeln(‘Первая буква встречается ‘,k1);
writeln(‘Последняя буква встречается ‘,k2);
writeln(‘Вывод:’);
if k1>k2 then writeln(‘Первая буква встречается чаще’)
else if k1 ‘);
readln(z);
if pos(t,s)<>0 then
j:=pos(t,s);
p:=copy(s,1,j-1);
p:=p+z;
p:=p+copy(s,j+length(t),length(s));
writeln(p);
readln;
end.
Постановка задачи.
Дана строка, заканчивающаяся точкой. Подсчитать, количество слов в строке.

Замечание.
Сколько слов в строке? Делаем упрощение. Между словами у нас что? Правильно — символ пробела!
Самое простое решение, основанное на том, что строка всегда заканчивается символом точки.
Решение №1.
Но мы не ищем лёгких путей, так как уже знаем ветвление и оператор case. то есть будет условие, которое проверяет, что строка не обязательно заканчивается точкой. Также учитываем, что точки естьи в самой строке.
Решение №2.
После изучения этих примеров, можете смело переходить к созданию собственного решения!
TURBO PASCAL
Если слова в тексте разделены одним пробелом, то задача сводится к подсчету числа пробелов. Количество слов при этом равно числу пробелов плюс 1. Если же число пробелов между соседними словами произвольное, как обычно и бывает, то алгоритм усложняется. Рассмотрим оба варианта решения этой задачи.
Вариант 1. Слова в тексте разделены одним пробелом.
| Данные | Результат |
| "Кот на крыше" | N=3 |
Демонстрация
Вариант 2. Слова в тексте разделены произвольным количеством пробелов.
WordCount
Символы, которые будут использоваться в качестве разделителей слов.
Результат функции
Количество слов в строке.
Описание
WordCount возвращает количество слов в строке S . Слово — это непустая строка символов, ограниченная одним из символов из WordDelims .
В качестве аргумента WordDelims может быть исползована константа StdWordDelims.
Ошибки
Смотри также
Ищет позицию N-го слова в строке
Стандартные значения разделителей слов.
Извлекает и возвращает N-е слово из строки
Извлекает N-е слово из строки и возвращает его, а также позицию, в которой оно находится