K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения: > , < , >=, <=, <> .
Например: 'A' < 'W'
Функции, которые применимы к символьным переменным:
ORD(X) - определяет порядковый номер символа Х.
Пример: ord('a')=97.
CHR(X) - определяет символ по номеру.
Пример: chr(97)='a'.
PRED(X) - выдает символ, стоящий перед символом Х
Пример: pred('B')='A'
SUCC(X) - выдает символ, следующий после символа Х
Пример: succ('A')='B'.
UPCASE(ch) - преобразует строчную букву в прописную. Обрабатывает только буквы латинского алфавита.
Примеры задач
Посчитать количество слов в предложении.
program zadacha_2;
uses crt;
var
st:string;
k,i,n:integer;
begin
clrscr;
writeln ('Введите предложение');
readln(st);
n:=length(st);
for i:=1 to n do
begin
if (st[i]=' ') or (st[i]=', ') or (st[i]='. ') then
k:=k+1;
end;
writeln ('Количество слов в строке',k);
readln;
end.
Даны два слова. Из первого слова удалить все буквы, которые встречаются во втором слове.
program zadacha_3;
uses crt;
var
i,j,l,m:integer;
sl,sl1:string;
begin
clrscr;
writeln('введите слово');
readln(sl);
writeln('введите другое слово ');
readln(sl1);
l:=length(sl);
m:=length(sl1);
for i:=1 to l do
for j:=1 to m do
if sl[i]=sl1[j] then
begin
delete(sl,i,1);
end;
writeln(sl);
readln;
end.
Определить наименьшую длину слова в заданной строке.
program zadacha_4;
uses crt;
var
a: array [1..50] of integer;
s:string;
min,dl,i,l,k:integer;
begin
clrscr;
writeln('введите предложение');
readln(s);
l:=length(s); {строковая функция}
min:=l; {минимальному слову присваиваем длину}
dl:=0; {длина текущего слова}
for i:=1 to l do {цикл}
begin
if s[i]<>' ' then
dl:=dl+1;
else
begin
a[k]:=dl;
dl:=0;
k:=k+1;
end;
begin
if (min>dl) and (dl>0) then
begin
min:=dl;
end;
end;
end;
writeln( 'длина наименьшего слова: ', min);
readln;
end.
Написать программу, определяющую, сколько слов заданной строки оканчивается на последнюю букву первого слова этой строки.
uses crt;
var
st,w:string [30];
i,n,k,t:integer;
begin
clrscr;
writeln('Введите предложение');
readln(st);
begin
n:=length(st);
end;
begin
k:=pos(' ',st);
w:=st[k-1];
end;
for i:=k+1 to n do
if (st[i]=' ') and (st[i-1]=w) then
begin
t:=t+1;
end;
if st[n]=w then
begin
t:=t+1;
end;
writeln(t);
readln;
end.
Из предложения удалить все символы, стоящие на местах, кратных трем.
program zadacha_7;
uses crt;
var
sl:string[255];
k,l,i,m:integer;
begin
clrscr;
write(' Введите предложение ');
readln(sl);
l:=length(sl);
k:=1;
for i:=1 to l do
if sl[i]=' ' then
k:=k+1;
write(' Введите № слова' ,k);
readln(k);
for i:=1 to l do
begin
if i mod 3=1 then
delete(sl,k+i,1);
end;
writeln(' sl=',sl,' ',m);
readln
end.
Посчитать, сколько слов в предложении оканчиваются буквой "я".
program zadacha_9;
uses crt;
var
st: string[80]; {строка-предложение}
k: integer; {кол-во слов, оканчивающихся на «я»}
l: integer; {длина строки}
i: integer; {переменная - счетчик}
begin
clrscr;
write ('введите предложение ');
Readln (st);
l:=length (st);
for i:=1 to l do
begin
if (copy(st,i,2)='я.') or (copy(st,i,2)='я, ') or (copy(st,i,2)='я ') then
begin
k:=k+1;
end;
end;
writeln('символов в строке = ',l,' ');
writeln('строка - ',st,' ');
writeln('слов, которые оканчиваются на "я" = ',k,' ');
readln;
end.
Написать прогрму которая из даннго слова получает новое путем удалениея "*".
program zadacha_10;
uses crt;
var
sl:string[255];
n,i:integer;
begin
clrscr;
write(' Введите строку ');
readln(sl);
n:=length(sl);
for i:=1 to n do
if sl[i]='*' then
begin
delete(sl,i,1);
end;
for i:=1 to 3 do
begin
write(sl);
readln;
end
end.
Опредилить на каких местах стоит буква "р" и "п".
program zadacha_11;
uses crt;
var
sl:string[255];
n,i:integer;
begin
clrscr;
write(' Введите строку ');
readln(sl);
n:=length(sl);
for i:=1 to n do
begin
if sl[i]='п' then
writeln(' Место на каком стоит буква "п" ',i);
if sl[i]='р' then
writeln(' Место на каком стоит буква "р" ',i);
end;
readln;
end.
Посчитать количество слогов слова.
program zadacha_13;
uses crt;
var
sl,sl1:string[255];
k,i,n,j:integer;
begin
clrscr;
write(' Введите предложение ');
readln(sl);
k:=0;
n:=length(sl);
sl1:='ауыеоэюияё';
for i:=1 to n do
for j:=1 to 10 do
begin
if (sl[i]=sl1[j]) then
k:=k+1;
end;
writeln(' Слогов ', k);
readln;
end.
В строке все пробелы, стоящие на четных местах, заменить на двойные пробелы.
program zadacha_14;
uses crt;
var
sl,h:string[100];
l,i,j,k:integer;
begin
clrscr;
writeln (‘Введите строку');
readln (sl);
l:=length(sl);
j:=1;
for i:=1 to l do
if (i mod 2 <> 0) or (sl[i]<>' ') { проверяет условие если I не стоит на
then четных местах и не равно пробелу }
begin
h[j]:=sl[i]; {то новой строке присваиваем старую}
j:=j+1;
end
else
begin
h[j]:=sl[i]; {иначе новая строка равна старой плюс два пробела}
j:=j+2;
h[j+1]:=sl[i];
end;
for i:=1 to j-1 do
begin
write (h[i]);
end;
readln;
end.
11. Из строки символов удалить группу символов «абвг».
program zadacha_15;
uses crt;
Var
st,st1:string [100];
t,i,r:integer;
begin
clrscr;
writeln('Введите строку');
readln(st);
t:=length(st);
r:=0;
for i:=1 to t do
if copy(st,i,4)<>'абвг' then
begin
r:=r+1;
st1[r]:=st[i];
end
else
i:=i+3;
for i:=1 to r do
write(st1[i]);
readln;
end.
12. Дано слово из 12 букв. Получить новое слово, разместив первую треть слова на месте третей, вторую – на месте первой, третью – на месте второй.
program zadacha_16;
uses crt;
var
s: string[12];
s1,s2,s3: string[4];
l,i:integer;
begin
clrscr;
writeln ('Введите слово из 12 букв.');
readln (s);
l:=length(s);
i:=1;
s1:=copy(s,i,4);
s2:=copy(s,i+4,4);
s3:=copy(s,i+8,4);
s:=s2+s3+s1;
writeln ('Новое слово');
write (s);
readln;
end.
end.
13. Выяснить сколько раз встречается каждая буква алфавита в строке.
program zadacha_18;
uses crt;
var
st: string [100];
procedure alphavit (st: string);
var
s: string;
k, i,l,j,n: integer;
begin
s: ='абвгдеёжзиклмнопрстуфхцчшщьыъэюя';
l: =length(s);
n: =length (st);
for i: =1 to l do
begin
k: =0;
for j: =1 to n do
begin
if s[i] = st[j] then
begin
k:=k+1;
end;
end;
if k>0 then
begin
writeln('Буква ',s[i],' встречается в предложении ',k,'раз');
readln;
end;
end;
end;
begin
clrscr;
writeln ('Введите предложение');
readln (st);
alphavit (st);
readln;
end.
14. Из слова «спаниель» путем вырезок и склеек его букв получить слово «апельсин».
program zadacha_20;
uses crt;
const
s='спаниель';
var
s1: string[8];
s1,s2,s3: string[4];
l,i:integer;
begin
clrscr;
l:=length(s);
i:=1;
s1:=s[3]+s[2]+copy(s,6,3)+s[1+s[5]+s[4];
writeln ('Из слова спаниель получено слово - ',s1);
readln;
end.
15. Дано предложение. Верно ли ,что число слов в предложение больше трех?
program zadacha_22;
uses crt;
var
st: string;
i,k,l: integer;
begin
clrscr;
writeln ('Введите предложение ');
readln (st);
l:=length(st);
for i:=1 to l do
begin
if (st[i]=' ') or (st[i]=',') or (st[i]='.') then
begin
k:=k+1;
end;
end;
if k>3 then
begin
writeln ('В введённом предложении больше трёх слов');
end
else
begin
writeln ('В введённом предложении меньше трёх слов');
end;
readln;
end.
16. Дан текст. Верно ли, что в нем есть, пять идущих подряд одинаковых чисел.
program zadacha_23;
uses crt;
var
st:string; {текст}
i:integer; {номер буквы слова}
k:integer; {количество букв в тексте}
c:integer; {количество в тексте пяти идущих подряд одинаковых чисел}
begin
clrscr;
writeln('Введите строку');
readln(st);
k:=length(st); {определяем длину}
c:=0;
for i:=1 to k do
if (st[i]=st[i+1]) and (st[i]=st[i+2]) and (st[i]=st[i+3]) and
(st[i]=st[i+4])then
{определяем есть ли пять идущих подряд одинаковых символов}
begin
c:=c+1; {если есть то число увеличиваем на 1}
end;
if c>=1 then
begin
writeln('Верно');
end
else
writeln('Нет');
readln;
end.
17. Дан текст. Определить количество букв "и" в первом предложение.
program zadacha_24;
uses crt;
var
st: string;
i,k,l: integer;
begin
clrscr;
writeln ('Введите текст ');
readln (st);
l:=length (st);
i:=1;
while (st[i] < > '.') and (i < l) do
begin
if (st[i]='и') or (st[i]='И') then
begin
k:=k+1;
end;
i:=i+1;
end;
writeln ('Количество букв и в первом предложение ',k);
readln;
end.
18. Дано предложение. Определить есть ли в нем сочетание "чу" или "щу".В случае положительного ответа найти также порядковый номер первой буквы первого из них.
writeln('в предложении есть сочетание "щу" или "чу"');
readln;
writeln(i); {определяю номер 1 буквы одного из этих сочетаний}
readln;
end;
end;
end.
19. Дано предложение напечатать все его символы, расположенные между двумя первыми встретившимися запятыми.
program zadacha_26;
uses crt;
var
st:string [100];
procedure asd(st1:string);
var
sl,sl1:string [100]; {предложение}
i,n:integer; {переменные счетчика}
begin
n:=length(st1); {вычисление текущей длины строки}
for i:=1 to n do
If st1 [i]=',' then
sl:=copy(st1,i+1,n); {вырез из строки подстроку}
for i:=1 to n do
If st1 [i]=',' then
delete (st1,i,n); {удаление}
sl1:=st1+sl;
writeln (sl1);
readln;
end;
begin
clrscr;
writeln('введите предложение');
readln (st);
asd(st);
end.
20. Дано слово, состоящее из четного кол-ва букв. Поменять местами первую букву со второй, третью с четвертой и т.д.
program zadacha_27;
uses crt;
var
s:string[16]; {слово}
c:char; {переменная для замены букв}
l:integer; {длина слова}
i:integer; {переменная-счетчик}
begin
clrscr;
writeln('введите слово, состоящее из четного кол-ва букв');
readln(s);
l:=length(s); {находим длину строки}
i:=i+1;
for i:=1 to l do
begin
if l mod 2=0 then {если в слове четное кол-во букв, то}
begin
c:=s[i]; {присваиваем переменной первую, третью и т.д.букву}
s[i]:=s[i+1]; {первой, третьей и т.д. букве присваиваем следующ.}
s[i+1]:=c; {след. присв. первую, третью и т.д.
i:=i+1; {увеличиваем счетчик
end;
end;
writeln('s=',s); {выводим новое слово}
readln;
if l mod 2>0 then {если в слове нечетное кол-во букв, то выводим}
begin
writeln('в слове нечетное кол-во букв');
readln;
end;
end.
Контрольные вопросы:
1. Как записываются строковые константы?
2. Как описываются строковые переменные?
3. Перечислите операции и функции, разрешенные для данных строкового типа.
4. Запишите условие истинное, если:
5. Какое значение вернет процедура val('2e5',i,k)?
6. Укажите, какие из указанных ниже операций допустимы в Паскале:
var a1,a2:string; b1,b2:string[80]; c:string[5];
a) a1=a2;
b) b2>b1;
c) a1<=b2;
d) c=b1;
e) c:=a2;
f) a2:='b1+b2';
g) a1:=a2;
h) a2:=b2;
7. Укажите, какие из указанных ниже выражений допустимы в Паскале:
var a1,a2:string; b1,b2:string[80]; c:string[5];
a) copy(a1,5,3)+length(a2);.
b) length(b2)+pos('aa',b1);
c) pos(c,a1)+length(copy(c,6,2));
d) b1+copy(b2,65,20)+copy(pos('a',c),1,7));
e) pos(copy(a1,4,6),delete(a2,2,1))+length(b2);
f) insert(copy(c,2,3),a2+b2,3);
g) delete(copy(a2,5,6),3,4));
h) insert(copy(a1,5,5),a2,3);
8. Установите значения следующих выражений:
a) concat('кро',a,b) при a='код', b='ил';
b) copy(s,2,3) при s='крокодил';
c) copy(s,4,2)+s[2]+s[7]+s[6]+s[5]+s[2] при s='крокодил';
d) pos('око',s) при s='крокодил';
e) pos('я','крокодил');
f) length('зеленый'+' '+s) при s='крокодил';
g) insert('чо',w,5) при w='моряк';
h) insert('Н',d,3) при d='око';
i) delete(w,5,2) при w='морячок';
j) str(123,s);
k) pos('а','аяоёуюыиэе')>0;
l) copy(s,pos(' ',s)+1,length(s)-pos(' ',s)) при s='Вася Кук – информатик';
m) delete(s,length(s),1) при s='123456789';
n) copy(s,i,j-i+1) при s='123456789', i=3, j=7;
o) insert(b1,b2,length(b1)) при b1='1', b2='22';
9. Установите, какую задачу решает приведенный ниже фрагмент:
1) s:='';
for i:=1 to length(t) do
if pos(copy(t,i,1),'aeiouy')>0
then s:=s+copy(t,i,1);
2) s:='';
for i:=length(t) downto 1 do
s:=copy(t,i,1)+s.
Задачи для самостоятельной работы
1. Запишите условие истинное, если:
1) в записи фамилии «Соколенко» встречается буква «л»;
2) в записи фамилии «Соколенко» не встречается буква «л»;
3)в записи фамилии «Соколенко» встречается буква «я»;
4) в записи фамилии «Соколенко» не встречается буква «я»;
5) в записи фамилии «Соколенко» встречается буква «н», но не встречается буква «у»;
6) слово а длиннее слова b;
7) из букв фамилии «Соколенко» можно образовать слово «лоск»;
8) из букв фамилии «Соколенко» можно образовать слово «локон»;
9) из букв фамилии «Соколенко» можно образовать слово «кокон»;
10) из букв фамилии «Соколенко» нельзя образовать слово «коляска»;
11) из букв фамилии A нельзя образовать слово B.
5.20. Проверьте, является ли заданный символ строчной гласной буквой русского алфавита.
5.21. Проверьте, является ли заданный символ согласной буквой русского алфавита (заглавной или строчной).
1. Составить программу, которая выводит на экран слово, удваивая каждую букву исходного слова.
2. Определить на какую букву заканчивается третье слово в строке.
3. Написать программу, выдающие номер позиции заданной строки, в которой впервые встречается буква "а" и сообщение "end", если в строке нет такой буквы.
4. В предложении посчитать количество букв «а» и количество букв «б».
5. Написать программу, которая подсчитывает, сколько раз среди символов заданной строки встречается буква "К".
6. Дано предложение. Вычислить процент вхождения буквы «о» в данное предложение и получить новое предложение путем увеличения данного, на полученный процент, пробелами.
7. Дана фраза определить сколько в ней предложений.
8. Написать программу, выдающую номер позиции заданной строки, в которой в пятый раз встречается буква "к" и соответствующее сообщение если эта буква встречается менее пяти раз.
9. Дано слово. Сколько букв 'а' в этом слове стоит на четных местах.
10. Дано предложение. Определить, каких букв в нем больше: «м» или «н».
11. Дано предложение напечатать все его символы, предшествующие первой встретившейся запятой.
12. Дано предложение, в котором есть несколько букв «е». Найти порядковый номер первой и последней из них.
13. Дано предложение. Определить есть ли в нем буква «а». Есть таких букв несколько, то определить порядковый номер первой их них.
14. Дана последовательность символов, в начале которой имеется некоторое количество одинаковых символов. Определить это количество.
15. Даны два слова. Определить, сколько начальных букв первого слова совпадают с начальными буквами второго слова.
16. Да последовательность слов. Проверить правильность написания сочетания «ча» и «ща». Исправить ошибки.
17. Дано предложение, в котором имеются буквы «с» и «т». Определить, какая из них встречается позже (при просмотре слова слева направо). Если таких букв несколько, то должны учитываться последние из них.
18. Отредактировать заданное предложение, удаляя из него все слова с нечетными номерами и переворачивая слова с четными номерами.
19. Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками. Оставшуюся часть строки отсортировать в алфавитном порядке.
20. Написать программу, которая определяет количество слов заданной строки, длина каждого из которых равна длине первого слова этой строки. Строку отсортировать в алфавитном порядке.
21. Написать программу нахождения самого короткого слова заданной строки.
22. Написать программу подсчета в заданной строке количества букв латинского алфавита.
23. Написать программу подсчета количества букв «д» в последнем слове заданной строки.
24. Дано предложение. Переписать предложение, переставляя слова в нем в обратном порядке.
25. Написать программу нахождения в заданной строке первого слова, которое имеет заданную длину.
26. Проверить, являются ли заданные слова в предложении палиндромами (перевёртышами).
27. Написать программу получения из заданной строки новой строки путем удаления всех символов, не являющихся буквами латинского алфавита
28. Написать программу, которая выводит сообщение «ДЛИНА», если все слова в тексте имеют одинаковую длину.
29. Написать программу, определяющую, сколько слов в заданной строке оканчивается буквой «я», если известно, что слова обязательно стоит либо пробел, либо точка.
30. Написать программу определения слов заданной строки, которые оканчиваются на «ова».
31. Написать программу подсчета количества слов, имеющих один слог
32. Составьте программу, вычеркивающую. Каждую третью букву из заданного слова.
33. Из слова «вертикаль» путем вырезок и склеек его букв получить слова «тир» и «ветка».
34. Дана квадратная матрица символьного типа. Транспонировать ее.
35. Дано слово. Получить и вывести на экран буквосочетание, состоящее из третьего и последнего символов.
36. Из слова «программа» путем вырезок и склеек его букв получить слова «ром» и «рампа».
37. Дано предложение. Все пробелы в нем заменить на символ «_».
38. Дана квадратная матрица символьного типа. Транспонировать ее. Вывести на экран элементы, расположенные выше главной диагонали.
39. Дано слово. Получить и вывести на экран буквосочетание, состоящее из второго, третьего и четвертого символов.
40. Из слова «трос» путем вырезок и склеек его букв получить слова «сорт», «рост» и «торс»
41. Дано слово, состоящее из четного числа букв. Получить и вывести на экран его первую половину.
42. Дано предложение. Сколько раз и на каких позициях встречается буквосочетание «нн».
43. Из слова «клоун» путем вырезок и склеек его букв получить слова «уклон» и «кулон».
44. Дана квадратная матрица символьного типа. Транспонировать ее. Вывести на экран элементы, расположенные на побочной диагонали.
45. Дано слово. Получить и вывести на экран его часть, образованную идущими подряд буквами, начиная с m – ой n - ой.
46. Из слова «клоун» путем вырезок и склеек его букв получить слова «колун» и «кулон».
47. Из слова 'понедельник', используя функции строковых данных, получите слово 'плодик'.
48. Дано слово. Перенести три его первые буквы в конец.
49. Дано предложение. Заменить в нем все вхождения буквосочетания «ах» на «ух».
50. Дано слово. Поменять местами его половины.
51. Определить длину последнего слова в строке.
52. Дано предложение. Добавить к нему в конце столько звездочек, сколько букв в этом слове.
53. Из слова «апельсин» путем вырезок и склеек его букв получить слово «спаниель».
54. Дано предложение. Заменить в нем все вхождения буквосочетания «да» на «не».
55. Дана строка, содержащая текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.
56. В предложении некоторые слова записаны подряд несколько раз. Отредактировать этот текст, удаляя из него подряд идущие одинаковые слова.
57. Преобразуйте прописные буквы русского алфавита в заглавные.
58. Проверьте, является ли заданный символ цифрой.
59. Дан текст. Вывести на экран слова, состоящие из трех букв.
60. Дана строка, содержащая произвольный текст. Выяснить чего в нем больше: русских букв или цифр.
61. Дана строка, содержащая текст на русском языке и некоторая буква. Найти слово, содержащее наибольшее количество указанных букв.
Литература:
1. О.Л. Голицына, И.И. Попов , Основы алгоритмизации и программирования 113-124;
2. В. Фаронов Turbo Pascal, стр 121-124
10 Множества, их описание. Операции над множествами