Содержание:
Символьный тип char в Паскале
Символьной переменной соответствует тип char:
var s: char;Инициализация символьной переменной:
u:='a';
Основные функции для работы с символами
Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:
CHR(x: byte): char; |
1 2 3 4 5 6 7 | var a:char; i:byte; begin i:=34; {код, соответствующей символу " в ASCII-таблице} a:=chr(i); writeln(a) end. |
Функция возвращает порядковый номер символа параметра в таблице ASCII:
ORD(c: char): byte; |
1 2 3 4 5 | var i: integer; begin for i:=32 to 255 do write(chr(i):3); end. |
Строковые переменные в Паскаль
Строковые переменные в Паскале имеют тип String
Объявление и инициализация строковой переменной:
1 2 3 4 5 var a:string; begin a:='Привет всем!'; writeln(a); end.Ввод значения строковой переменной с клавиатуры:
1 2 3 4 5 6 var a:string; begin writeln('Введите слово'); readln(a); writeln('Вы ввели слово ',a); end.Строка «рассматривается» компилятором, как массив букв:
s:='Банка';для компилятора:
s[1]='Б' s[2]='а' s[3]='н' s[4]='к' s[5]='а'
Функции работы со строками в Pascal
Исходные данные | Операция | Результат | ||
---|---|---|---|---|
|
|
s3=’Мотороллер’ | ||
|
|
k=5 | ||
|
|
l=10 | ||
|
|
s4= ‘трон’ | ||
|
|
s5=’Корочка’ | ||
|
|
s6=’Рубашка’ | ||
|
|
s8=’2.73′ | ||
|
|
x=2.73 |
1 2 3 4 5 6 7 8 9 10 11 | var s:string[30]; n,i:integer; begin writeln('введите текст'); readln(s); n:=0; for i:=1 to length(s) do if s[i]='f' then n:=n+1; write('в тексте букв f = ',n) end. |
Пример выполнения:
введите строку мой кот - хороший кот Результат: мой - хороший
* Задание повышенной сложности: запросить у пользователя ввести подстроку, которую требуется удалить из исходной строки.
Примеры использования логического типа (true и false) смотрите здесь.
Пример выполнения:
Введите строку: Hello world Результат: false
Введите строку: Hello students Результат: true
Использовать функции для работы с символами: chr и ord pascal.
Подсказка: считать количество слов по количеству пробелов в строке.
* усложненный вариант: предусмотреть, что в начале или в конце введенной строки введен пробел
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const m = ['0'..'9']; var s: string; i, k: byte; begin read(s); k := 0; for i := 1 to length(s) do if s[i] in m then inc(k); writeln('цифр = ', k); readln; end. |
1 2 3 4 5 6 7 8 9 10 11 12 13 | var a,b,c:string; i:longint; begin write('введите слово:'); readln(a); b:=''; for i:=1 to length(a) do b:=a[i]+b; if a=b then write('перевертыш') else write('не перевертыш'); end. |
Пример выполнения:
Введите строку: Кума Результат: да
Введите строку: Дед Результат: нет
Пример выполнения:
Введите строку: Барабулька Введите букву, которую заменить: а Введите букву, на которую заменить: у Результат: Бурубульку
Пример выполнения:
Введите строку: 1234567891011слово следующееСлово иСледСлово Слово с максимальным количеством букв: следующееСлово
for
.const letters=['a'..'z'];
), то этот символ прибавляется к первому элементу массива слов строки (... array [1..100] of string
).arrayS: array[1..100] of string;
строковый массив — будущий массив из слов предложения). Добавляя каждую букву к элементу arrayS[k].Пример: Введите имя, фамилию и отчество: Иван Алибабаевич Попов Результат: Попов И.А.
Примечание:
Использовать функции: Pos, Copy, Delete
Пример:
Входной текст: Алгоритм — это правила выполнения определенных действий!, предписание исполнителю! совершить последовательность действий!, набор команд для компьютера! Выходной текст: Алгоритм — это правила выполнения определенных действий, предписание исполнителю! совершить последовательность действий, набор команд для компьютера!
Трудность низкая:
Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.
Трудность высокая:
Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.
А теперь рассмотрим олимпиадное задание по Паскалю:
* Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k
, причем отрицательное значение является признаком сдвига влево, положительное — вправо.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | var a:char; i,n:byte; s,s1:string; begin s1:=''; readln(s); for i:=1 to length(s) do begin n:=ord(...); n:=n+3; if n=123 then n:=97; {в ASCII 120 - x, 97 - a} if ...; {в ASCII 121 - y, 98 - b} if ...; {в ASCII 122 - z, 99 - c} a:=chr(...); s1:=...; end; writeln(s1) end. |
Посимвольный ввод до пробела
Посимвольный ввод удобен для «мгновенной» обработки символов в строке.
Решение:
var name: array[1..n] of string; c:char; ...
Для организации массива символьных строк:
.
). Необходимо в введенном тексте вместо всех букв «ё» ставить буквы «е». Выполнить, работая со строкой посимвольно: программа должна формировать в памяти вторую строковую переменную с измененным предложением, а потом выводить ее на экран.
Пример:
Входной текст: Алгоритм — это правила выполнения определённых действий. Выходной текст: Алгоритм — это правила выполнения определенных действий.
<Фамилия> <год рождения> <оценка>
- Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
- Вывести фамилии студентов, у которых оценка 2.
- Вывести фамилии студентов, родившихся в 1996 году.
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:
mrxmrx513
Даны натуральные числа n и m и строки длиной 2n и m. Получите новую, третью строку, элементы которой получены путем добавления символов второй строки в центр первой.