#17 Строки как одномерные массивы символов в Паскаль. Примеры кода программ
Primary tabs
Ранее мы с вами познакомились с одномерными массивами, теперь посмотрим как эти знания помогут нам работать со строками (данными типа string).
Обход символов строки в цикле -- основная идея
Основная идея состоит в том, что строку можно читать посимвольно, обходя её как одномерный массив символов.
Сразу же рассмотрим пример, в котором символы полученной от пользователя строки мы выведем по одному, например в столбик:
var s: string; i: integer; begin writeln('vvedite proizvolnuy stroku:'); readln(s); for i:=1 to length(s) do // от 1 до длины строки begin writeln(s[i]); // выводим очередной символ строки end; readln(); end.
-- здесь следует обратить внимание на то, что символы строки нумеруются с единицы. Для определения длины строки (в символах) мы использовали стандартную функцию length().
Примеры
Пример №1 -- сравнение символов строк
Задача:
Пользователь вводит произвольную строку, посчитайте число вхождений в неё символа $w$.
Решение:
var s: string; i, n: integer; begin writeln('vvedite proizvolnuy stroku:'); readln(s); n := 0; // значение по умолчанию (инициализация переменной) for i:=1 to length(s) do // обходим символы строки begin if (s[i] = 'w') then // сравниваем очередной символ строки с литералом n := n + 1; end; writeln('Otvet: v vashey stroke simvol "w" vstrechaetsya ', n, ' raz.'); readln(); end.
Задачи для самостоятельного решения
- Пользователь вводит символ $k$ и строку $s$ -- посчитайте сколько раз символ $k$ встречается в строке $s$.
- Пользователь вводит произвольную строку, выведите на экран каждый пятый символ или сообщение об ошибке, если строка состоит менее чем из 5 символов.
- Пользователь вводит строку произвольных символов, посчитайте количество цифр в ней.
Подсказка: для определения принадлежности символа цифре используйте идею из этого кода.
- Пользователь вводит строку произвольных символов, запишите первые 8 символов цифр в массив и выведете этот массив на экран.
Подсказка: массив должен быть "of char".
- Пользователь вводит строку символов, в которой есть два числа, разделенные другими символами, т.е. строка имеет вид:
какиетосимволыЧИСЛО1какиетосимволыЧИСЛО2какиетосимволы
необходимо считать данные числа в две строковые переменные s1 и s2.
например:
- для:
wsefg34teth567gfd
получим s1='34' и s2='567'
- для:
wsefg22teth88
получим s1='22' и s2='88'
- для:
15teth47
получим s1='15' и s2='47'
Примечание: если никак не получается решить самостоятельно, посмотрите этот разбор решения.
- для:
- Пользователь вводит строку произвольных символов, выделите из неё массив первых 8 строковых литералов, которые являются числами. И выведите эти числа на экран.
Например, из строки:
rew2@#$$#435tr353453t4er4
должны быть выделены подстроки:
2 435 353453 4 4
Подсказка: массив должен быть "of string".
Примечание: если никак не получается решить самостоятельно, посмотрите этот разбор решения.
- Пользователь вводит произвольную строку, перестройте её в "ёлочку".
Например, если он ввел:rewt34t54346t566
то в ответ программа должны вывести:
r ew t34 t543 46t56 6
- Проверить можно ли строки из $m$ перестановкой символов получить строку $n$.
Примеры (входные данные и ответ):-
abc и bca
-- можно
-
abc и baa
-- нельзя
-
abcc и cbac
-- можно
-
abc4c и cb55ac
-- нельзя
-
- Пользователь вводит исходную строку s.
Ваша программа должна вернуть другую строку, в которой все смежные (соседние) повторяющиеся символы должны быть "удалены" (т.е. повторов в новой строке быть не должно), например:-
для строки:
5533g
вернуть:
53g
-
для строки:
b5ghh55788oooggtttttt
вернуть:
b5gh578ogt
-
для строки:
- Log in to post comments
- 17005 reads
Romakip
Thu, 10/22/2020 - 16:50
Permalink
Для седьмой задачи идеально бы подошли многомерные массивы)
Для седьмой задачи идеально бы подошли многомерные массивы)
vedro-compota
Thu, 10/22/2020 - 22:16
Permalink
строка это и так массив
строка это и так массив символов, т.е. тут вполне хватает одномерности
_____________
матфак вгу и остальная классика =)
Pages