1 / 17

СТРОКИ

СТРОКИ. Строковой называется последовательность символов определённой длины. Идентификатор типа – слово String Примеры описания : Var Str1 : String[10]; Str2 : String; Str3 : String[45];

nantai
Download Presentation

СТРОКИ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. СТРОКИ • Строковой называется последовательность символов определённой длины. • Идентификатор типа – слово String • Примеры описания:Var Str1 : String[10];Str2 : String; • Str3 : String[45]; • В квадратных скобках указывается максимальный размер (длина) строки. Если он не указан, то длина строки счис\тается равной 255 символам. • Строку можно рассматривать как одномерный массив из символов. К каждому символу строки допустимо обращение по его номеру: Str1[i] – обращение к i-му элементу строки Str1 • Первый символ строки (с индексом 0) содержит фактическую длину строки. • Переменные типа вводятся и выводятся на экран монитора не поэлементно, как массивы, а сразу целиком.

  2. Стандартные процедуры и функции работы со строковым типом данных

  3. Э К Р А Н: Примеры Я помню чудное мгновенье • s1:=‘Я помню чудное мгновенье’;writeLn(s1); Я помню мгновенье Delete(s1,9,7); writeLn(s1); Я помню чудное мгновенье 2) s1:=‘Я помню чудное мгновенье’;writeLn(s1); Я помню очень чудное мгновенье 567 97.3 567 97.3 56797.3 s2:=‘очень ’; Insert(s2,s1,9); writeLn(s1); 3) l:=567; m:=97.3; writeLn(l) writeLn(m:5:1); Str(l,s1); writeLn(s1); Str(m,s2);writeLn(s2); WriteLn(s1+s2); строки

  4. 4) s1:=‘789’; s2:=’34.6’; s3:=‘3+2a’; Э К Р А Н: 789 0 34.6 0 823.6 Val(s1,p,w); writeLn(p:4,w:2); Val(s2,q,w); writeLn(q:6:1,w:2); WriteLn(p+q:7:1); Val(s3,p,w); writeLn(w); 5) s1:=‘Я помню чудное мгновенье’; WriteLn(s1); Я помню чудное мгновенье 24 q:=Length(s1); WriteLn(q); 4 p:=Pos(‘о’,s1); WriteLn(p); 0 p:=Pos(‘к’,s1); WriteLn(p);

  5. S,q K:=0 нет нет S[i]=q k:=k+1 k Задачи. 1) Дана строка символов. Подсчитать, сколько раз среди символов строки встречается символ + и сколько раз символ *. Procedure ks(s:string;q:char; var k:byte); var i:byte; Begin k:=0; For i:=1 To Length(s) Do If s[i]=q Then inc(k); End; i, 1, length(s) да да

  6. 2) Дана строка символов. а) Заменить все восклицательные знаки в этой строке точками. б) Заменить каждую точку в строке многоточием. в) Заменить каждую из групп стоящих рядом точек одной точкой. w,v,st нет Pos(w,st)<>0 k:=Pos(w,st); Delete(st,k,Length(w)); st ProcedureZam(w,v:String; Var st:String); {w–старый символ, v-новый символ} Var k:byte; Begin… While Pos(w,st)<>0 Do begin k:=Pos(w,st); Delete(st,k,Length(w)); Insert(v,st,k); end; End; a) да Insert(v,st,k);

  7. 3) Задана строка символов. Определить все позиции вхождения заданного символа в строку, используя процедуру Pos(известно, что функция Pos возвращает позицию только первого вхождения подстроки в строку) ЭКРАН: Const z:String=‘*?*** ? ?**’ ; ch : Char=‘?’; i: Byte=0; BEGIN WriteLn(z); While Pos(ch,z)<>0 do begin WriteLn(Pos(ch,z)+i) Delete(z, Pos(ch,z),1); Inc(i) end; WriteLn(z); ReadLn; END. *?*** ? ?** 2 9 10 *** * **

  8. 4) Задана строка. Исключить из неё группы символов, а)расположенные между фигурными скобками; б)сами скобки тоже исключить. а) Uses crt; Const s:String=‘текст{bvbv}буквы{b}’ Var l,r:Byte; BEGIN ClrScr; WriteLn(s); While Pos(‘{‘,s)<>0 do begin l:=Pos(‘{‘,s); r:= Pos(‘}‘,s); Delete(s,l+1,r-l); end; WriteLn(‘Преобразованная строка:’); WriteLn(s); END.

  9. Обработкастрокпо словам Словом называют набор символов, ограниченный с обеих сторон пробелом Задача 1 Дана строка, слова в которой разделены пробелом. Выделить из данной строки слова минимальной и максимальной длины и проверить, содержат ли они сдвоенные нн PROCEDURE WORDS(St:String;P:Integer; VAR SS:String); Var i:Integer; BEGIN SS:=‘’; i:=P; While i <= length(St) Do If St[i]<>’ ‘ Then Begin SS:=SS+St[i]; inc(i) End Else i:=Length(St) + 1; END;

  10. PROGRAM z1; VAR s:string; sl,min,max:string;k,nmin,nmax:byte; PROCEDURE Words (St:string;P:byte;VAR ss:string); Var i:byte; Begin ss:=''; i:=P; WHILE i<=length(St) Do If St[i]<>' 'Then Begin ss:=ss+St[i];inc(i); End Else i:=Length(St)+1; End; BEGIN WriteLn('Введитестроку: '); ReadLn(s); k:=1; nmax:=0; nmin:=255;

  11. While k<=Length(s) Do Begin Words(s,k,sl); k:=k+Length(sl)+1; If Length(sl)>nmax Then Begin nmax:=Length(sl); max:=sl; End; If Length(sl)<nmin Then Begin nmin:=Length(sl); min:=sl; End; End; WriteLn('Слово минимальной длины - ',min); WriteLn('Слово максимальной длины - ',max); IF POS('нн',max)<>0 Then WriteLN('Слово ',max,' содержит сдвоенное нн'); IF POS('нн',min)<>0 Then WriteLN('Слово ',min,' содержит сдвоенное нн'); END.

  12. ФУНКЦИЯUPCASE( c ) Параметром функции является символьная величина (char). Если параметр функции является малой буквой латинского алфавита, то результатом функции будет соответствующая большая буква (буква верхнего регистра). Если параметр не является малой буквой латинского алфавита, то функция возвращает значение параметра без изменения. Пример: WriteLn(‘z’); x:=upcase(‘z’); WriteLn(x); ЭКРАН: z Z

  13. Задача 2. Дана строка s. начало k:=0 c C=‘ ‘ и не конец строки нет k:=k+1 да c C=‘ ‘ и не конец строки нет да c нет конец строки да k конец а)Подсчитать количество слов в данной последовательности. Program n_a; uses crt; Var c:char; k: byte; BEGIN clrscr; k:=0; Write(‘Введите текст:');read(c); Repeat While(c=' ') and Not eoln Do Read(c); inc(k); While(c<>' ') and Not eoln Do Read(c); Untileoln; WriteLn('k= ',k:3); END.

  14. б)Подсчитать количество букв а в последнем слове данной последовательности Program n_b; uses crt; Var c:char;st:string[50];i,k,n: byte; BEGINclrscr; k:=0; Write('Vvedite tekst:'); read(c); Repeat While(c=' ') and (c<>#13) Do Read(c); st:=''; While(c<>' ') and (c<>#13) Do Begin st:=st+c; Read(c);End; WriteLn('st=',st); Until c=#13; n:=ord(st[0]); FOR i:=1 To n Do If st[i]='a' Then inc(k); WriteLn('k= ',k:3); readLn END.

  15. в)Подсчитать количество слов, начинающихсясбуквыб. Program n_v; uses crt; Var c:char; st:string[50]; k: byte; BEGIN clrscr; k:=0; Write('Vvedite tekst:'); read(c); Repeat While(c=' ') and (c<>#13) Do Read(c); st:=''; While(c<>' ') and (c<>#13) Do Begin st:=st+c; Read(c);End; WriteLn('st=',st); If st[1]='b' Then inc(k); Until c=#13; WriteLn('k= ',k:3); readLn END.

  16. в)Найти длину самого короткого слова Program n_g; uses crt; Var c:char; st:string[50]; k: byte; BEGIN clrscr; k:=255; Write('Vvedite tekst:'); read(c); Repeat While(c=' ') and (c<>#13 Do Read(c); st:=''; While(c<>' ') and (c<>#13 Do Begin st:=st+c; Read(c); End; WriteLn('st=',st); If ord(st[0])<k Then k:=ord(st[0]); Until c=#13; WriteLn('k= ',k:3); readLn END.

More Related