Символьные переменные и строки Решение задач Вербицкая Ольга Владимировна, Заозерная школа 16.

Презентация:



Advertisements
Похожие презентации
Решение задач С4. Примеры задач С4 1 Критерии оценивания.
Advertisements

СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
СТРОКИ Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания: Var Str1 : String[10];
Символьный и строковый тип данных. ТИП ДАННЫХ Целый: 1. Целый: Integer ( …32 768), LongInt ( … ), Word (0…65535) Логический:
Обработка символов строки. Дано слово. Переставить первые три и последние три буквы, сохранив порядок их следования.
Строки в Pascal
1 Строковый тип данных Строка – это последовательность символов определенной длины (от 0 до 255).
Множества. Внутреннее представление.. Механизм внутреннего представления Каждое значение базового типа представляется одним битом. В память заносится.
(Выполнила Войтюлевич Ольга Гимназия 1). Символьный тип данных Для работы с символами в языке Pascal предусмотрен специальный тип данных, который называется.
Символьные и строковые переменные. Общие понятия Для того чтобы ЭВМ могла обрабатывать тексты, она должна уметь оперировать не только с числами, но и.
Символы и строки. Процедуры и функции работы со строками.
P ASCAL ABC. О БЩЕЕ : С ЕМАНТИКА : ИМПЕРАТИВНАЯ К ЛАСС ЯЗЫКА : МУЛЬТИПАРАДИГМЕННЫЙ : СТРУКТУРНОЕ, ОБЪЕКТНО - ОРИЕНТИРОВАННОЕ, ОБОБЩЁННОЕ, ПРОЦЕДУРНОЕ.
Пример задачи с решением C4 (высокий уровень, время – 60 мин)
Решение задач. Вариант 1 1. Чему равна максимальная длина строки? 2. При помощи операций копирования и склейки из слова «жемчужина» составить слова: «чужие»,«муж».
Понятие строки. Операции со строковыми величинами. Стандартные процедуры и функции обработки строковых величин. Простые алгоритмы работы со строками на.
1 Символьный тип данных Описание: Char; Диапазон значений: любой символ – это буквы, цифры, знаки препинания и специальные символы. Каждому символу соответствует.
Шешель Анжелика. Значения: Символьная величина – 1 символ (буква, цифра, знак) Строковая величина – строка символов.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Обработка символьных величин. Цели урока Познакомиться с основными принципами работы с символьными величинами Познакомиться с основными принципами работы.
Познакомиться с основными принципами работы с символьными величинами Научиться применять процедуры и функции для их обработки.
Транксрипт:

Символьные переменные и строки Решение задач Вербицкая Ольга Владимировна, Заозерная школа 16

CHAR CHAR - символьный тип данных является порядковым, значения могут сравниваться между собой. Коды символов упорядочены, например: A

STRING У типа-строки может быть указан размер (от 1 до 255). Для строк выполняются операции сравнения (>, =,

Функции COPY(s,p,n) Тип значения функции string S: string; P,n:integer Из строки s, начиная с позиции p, копируется n символов LENGTH(s) Тип значения функции integer S: string; Определяется длина s, т.е. число символов из которых она состоит POS(w,s) Тип значения функции integer S,w: string; В строке s отыскивается первое вхождение строки w(номер позиции). Если вхождения нет, то возвращается 0 CONCAT(s1,s2,…Sm)Тип значения функции string S1,s2,…Sm: string; Строки s1+s2+…+sm записываются одна за другой. Если результат превысит 255 символов, строка обрывается

Процедуры DELETE(s,p,n)S: string;P,n:integer Удаляются n символов из строки s, начиная с позиции p INSERT(w,s,p,)S,w: string;P:integer В строку s, начиная с позиции p, вставляется строка w STR(v,s) Число v преобразуется в строку s VAL(s,v,w) Если строка s представляет собой правильную запись числа, то это число записывается в переменную v, при этом значение w равно 0. В противном случае (строка состоит не только из цифр) преобразование не выполняется, w0 –признак ошибки

Задача 1 Задача 2 Вывести в одну строку ABBCCC…ZZ…Z. Вывести в одну строку ZYY…AA…A

Задача 3 ABC…Z BC…Z C…Z …... Z Вывести треугольник

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

Дана строка символов. Удалить из нее все знаки препинания.

Задача 8 При решении данной задачи следует обратить внимание на 3 важные особенности. 1. Основная сложность заключается в том, что слова могут быть разделены группой пробелов. Если бы слово от слова отделялось только одним пробелом, то мы могли бы посчитать количество пробелов и вычислить количество слов. В нашем случае необходимо ввести логический флаг F, по которому можно определять начало слова (F:=TRUE) и конец слова (F:=FALSE). 2. По условию задачи текст вводится до точки, т.е. все слова за первой точкой игнорируются. 3. Последнее слово в тексте может обрабатываться не совсем корректно. Если между последним словом и точкой есть хотя бы один пробел, то флаг F позволит обработать его. Если последнее слово кончается на точку, то счетчик слов его не обработает, т.к. флаг не найдет конца слова. В этом случае значения счетчика слов нужно увеличивать на единицу по выходе из обработки цикла. Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Подсчитать, сколько слов содержит данная строка.

Задача 8 Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Подсчитать, сколько слов содержит данная строка. 1 способ решения

Задача 8 2 способ решения Дана строка символов до точки. Группы символов в ней между группами пробелов считаются словами. Подсчитать, сколько слов содержит данная строка.

Задачи повышенной сложности Задача На вход программе подается текст заклинания, состоящего не более чем из 200 символов, заканчивающийся точкой (символ «точка» во входных данных единственный). Оно было зашифровано Гарри Потером следующим образом. Сначала Гарри определил количество букв в самом длинном слове, обозначив полученное число К (словом называется непрерывная последовательность английских букв, слова друг от друга отделяются любыми другими символами, длина слова не превышает 20 символов). Затем он заменил каждую английскую букву в заклинании на букву, стоящую в алфавите на К букв ранее (алфавит считается циклическим, то есть перед буквой А стоит буква Z), оставив другие символы неизменными. Строчные буквы при этом остались строчными, а прописные прописными. Требуется написать как можно более эффективную программу, которая будет выводить на экран текст зашифрованного заклинания. Например, если зашифрованный текст был таким: Zb Ra Ca,Dab Ra. То результат расшифровки должен быть следующим: Ce Ud Fd,Gde Ud.

program str1; Var s:string; c,cnew:char; f: boolean; i,k,max:integer; begin s:=''; max:=0;k:=0; f:=false; repeat read(c); s:=s+c; if f then {слово началось } if c in ['a'..'z','A'..'Z'] then k:=k+1 else begin if k>max then max:=k; f:=false end else {f=false} if c in ['a'..'z','A'..'Z'] then begin f:=true; k:=1 end until c='.'; writeln(s,max); for i:=1 to length(s) do begin cnew:=chr(ord(s[i])+max); case s[i] of 'a'..'z':if cnew>'z' then write(chr(ord(cnew)-26)) else write(cnew); 'A'..'Z':if cnew>'Z' then write(chr(ord(cnew)-26)) else write(cnew); else write(s[i]) end; end; readln; readln; end. Комментарий Программа читает входные данные, сразу подсчитывая максимальную длину встречающихся слов. За второй проход исходных данных производится замена букв латинского алфавита и печать расшифрованного сообщения. Например, если зашифрованный текст был таким: Zb Ra Ca,Dab Ra. То результат расшифровки должен быть следующим: Ce Ud Fd,Gde Ud. РЕШЕНИЕ

Задачи повышенной сложности Задача. На вход программе подаются строчные и прописные английские буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от.,a..z,A..Z во входных данных отсутствуют. Требуется написать программу, составляющую слово из тех букв английского алфавита, которые не встречаются во входных данных ни как строчные, ни как прописные, причем буквы должны идти в алфавитном порядке. Каждая буква должна быть распечатана один раз. Буквы построенного слова должны быть прописными. Если во входных данных встречаются все буквы английского алфавита, то следует вывести строчными буквами слово no. Например, пусть на вход подаются следующие символы: absCDKLMNOPvwXYabcprst. В данном случае программа должна вывести EFGHIJQUZ

Решение program str2; Uses CRT; var a:array['A'..'Z'] of boolean; c:char; i,k:integer; begin clrscr; for c:='A' to 'Z' do a[c]:=false; read(c); c:=upcase(c); while c'.' do begin a[c]:=true; read(c); c:=upcase(c); end; k:=0; for c:='A' to 'Z' do if not a[c] then begin k:=k+1; write(c) end; if k=0 then write('no'); readln; readln; end. Комментарий Программа читает все входные символы до точки один раз, переводя строчные буквы в прописные и помечая в массиве, состоящем из 26 элементов, какие буквы встретились во входных данных. Сами входные символы при этом не запоминаются. За дополнительный проход этого массива печатаются те буквы, которые оказались не помеченными, в противном случае выводится словоno На вход подаются следующие символы: absCDKLMNOPvwXYabcprst. В данном случае программа должна вывести EFGHIJQUZ