Как найти символ в строке pascal

Раздел: Стандартные функции Паскаля

Основы программирования 2.0

Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать.
Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь.
Подробнее…

Функция Pos в Паскале ищет подстроку в строке.
Синтаксис функции имеет довольно много вариантов для разных типов данных:

function Pos(const substr : shortstring; 
             const s : shortstring) : SizeInt;

function Pos(C : Char;
             const s : shortstring) : SizeInt;

function Pos(const Substr : ShortString;
             const Source : AnsiString) : SizeInt;

function pos(const substr : shortstring;
             c : Char) : SizeInt;

function Pos(const Substr : AnsiString;
             const Source : AnsiString) : SizeInt;

function Pos(c : Char;
             const s : AnsiString) : SizeInt;

function Pos(const Substr : UnicodeString;
             const Source: UnicodeString) : SizeInt;

function Pos(c : Char;
             const s : UnicodeString) : SizeInt;

function Pos(c : UnicodeChar;
             const s : UnicodeString) : SizeInt;

function Pos(c : AnsiString;
             const s : UnicodeString) : SizeInt;

function Pos(c : UnicodeString;
             const s: AnsiString) : SizeInt;

function Pos(c : ShortString;
             const s : UnicodeString) : SizeInt;

function Pos(const Substr : WideString;
             const Source : WideString) : SizeInt;

function Pos(c : Char;
             const s : WideString) : SizeInt;

function Pos(c : WideChar;
             const s : WideString) : SizeInt;

function Pos(c : WideChar;
             const s : AnsiString) : SizeInt;

function Pos(c : AnsiString;
             const s : WideString) : SizeInt;

function Pos(c : WideString;
             const s : AnsiString) : SizeInt;

function Pos(c : ShortString;
             const s : WideString) : SizeInt;

function Pos(c : Char;
             const v : Variant) : SizeInt;

function Pos(s : ShortString;
             const v : Variant) : SizeInt;

function Pos(a : AnsiString;
             const v : Variant) : SizeInt;

function Pos(w : WideString;
            const v : Variant) : SizeInt;

function Pos(w : UnicodeString;
             const v : Variant) : SizeInt;

function Pos(v : Variant;
             const c: Char) : SizeInt;

function Pos(v : Variant;
             const s : ShortString) : SizeInt;

function Pos(v : Variant;
             const a : AnsiString) : SizeInt;

function Pos(v : Variant;
             const w : WideString) : SizeInt;

function Pos(v : Variant;
             const w : UnicodeString) : SizeInt;

function Pos(v1 : Variant;
             const v2 : Variant) : SizeInt;

Вся эта куча вариантов взята из документации. Так что просьба не критиковать за излишние подробности )))

Функция Pos возвращает индекс подстроки Substr в строке S, если строка S содержит в себе подстроку Substr. Если подстрока Substr не найдена в строке, то функция возвращает 0. Поиск чувствителен к регистру.

Как найти подстроку в строке

Разумеется, сделать это можно без использования специальных функций.

Проще всего найти в строке символ — это можно сделать простым перебором символов в строке.

Найти вхождение подстроки из нескольких символов будет сложнее. Но тоже возможно — существуют специальные алгоритмы.

Однако зачем “изобретать велосипед”, если есть готовые функции. Такие, например, как функция Pos.

С помощью этой функции можно найти символ или подстроку в строке.

Как часто приходится это делать? Зависит от специфики вашей работы.

Если вы работаете, например, с математикой, то почти никогда.

Если же вы работаете с большими объёмами текстовой информации, с файлами, то довольно часто.

Итак, пример:

S := 'abcdefgcde';
Writeln(Pos('f', S));     //Pos = 6
Writeln(Pos('F', S));     //Pos = 0 - буква F не найдена
Writeln(Pos('cde', S));   //Pos = 3, потому что функция 
                          //возвращает индекс первого 
                          //найденного вхождения
Writeln(Pos('cdf', S));   //Pos = 0 - такой подстроки нет

В принципе, здесь всё понятно. Особых разъяснений не требуется.

Единственное замечание по варианту поиска подстроки cde. Как видите, в исходной строке есть две подстроки cde. Но функция возвращает число 3, то есть индекс первого элемента первой найденной подстроки.

Пример программы:

program posfunc;

var S : string;

begin
//Ищем индекс первого пробела в строке
  S := 'The first space in this sentence is at position : ';
  Writeln(S, Pos(' ', S));  //Pos = 4

//Ищем последнюю букву английского алфавита в строке
  S := 'The last letter of the alphabet doesn''t appear in this sentence ';
  //Так как такой буквы в строке нет, то будет выведено сообщение об этом
  if (Pos('Z', S) = 0) and (Pos('z', S) = 0) then
    Writeln(S);

//Проверяем, что функция Pos действительно чувствительна к регистру
  S := 'abcdefgcde';
  Writeln(Pos('f', S));     //Pos = 6
  Writeln(Pos('F', S));     //Pos = 0 - буква F не найдена
  Writeln(Pos('cde', S));   //Pos = 3, потому что функция 
                            //возвращает индекс первого 
                            //найденного вхождения
  Writeln(Pos('cdf', S));   //Pos = 0 - такой подстроки нет

  ReadLn;
end. 

Как стать программистом 2.0

Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки…
Подробнее…

Помощь в технических вопросах

Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации.
Подробнее…

abelix

10 / 10 / 5

Регистрация: 30.11.2009

Сообщений: 119

1

Проверить наличие определенного символа в строке

22.09.2010, 21:53. Показов 16568. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

есть ли функция которая проверяет есть ли такой-то символ в строке

ну что то вроде

Pascal
1
if '%' in '!@#$@##$^&*$#%@$' then



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

22.09.2010, 21:55

2

Есть. pos(pdstr,str);
например, есть ли в строке цифра 9.

Pascal
1
if pos('9',s)>0 then write('Есть!')



2



10 / 10 / 5

Регистрация: 30.11.2009

Сообщений: 119

22.09.2010, 22:03

 [ТС]

3

а как на счет масивов с числами ,нужно ли создавать цикл или есть похожая функция



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

22.09.2010, 22:09

4

Для числовых или символьных массивов(вообще для любых массивов) такой нет, нужно организовывать поиск. Поэтому строки в Паскале удобная вещь.

Добавлено через 1 минуту
Единственно строку можно создать максимум из 255 символов, а символьный массив из нескольких тысяч символов.



0



10 / 10 / 5

Регистрация: 30.11.2009

Сообщений: 119

22.09.2010, 22:20

 [ТС]

5

для числовых,но это не важно так как нужно все таки организовывать цикл



0



Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

22.09.2010, 22:21

6

abelix, Я же написал, для любых массивов нет такой функции.



0



Posik

11 / 10 / 4

Регистрация: 31.08.2010

Сообщений: 187

22.09.2010, 23:21

7

Pascal
1
2
3
4
5
6
7
8
9
10
11
...
var a:string;
k:integer;
...
writeln('vvedite strocy'); readln(a);
k:=0;
for i:=1 to length(a) do
 if a[i]='&' then k:=1;
if k=1 then writeln('est');
else writeln('nety');
...



0



Puporev

Почетный модератор

64287 / 47586 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

23.09.2010, 07:38

8

Posik, Лишь бы что-то ляпнуть? Вы что считаете что ваш код лучше чем

Pascal
1
if pos('&',s)>0 then write('Есть!')

А речь как раз идет о стандартных функциях, а не о самопальных циклах.



0



11 / 10 / 4

Регистрация: 31.08.2010

Сообщений: 187

23.09.2010, 18:08

9

Всё я в обиде …)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

23.09.2010, 18:08

9

Редактировать

Символы и основные операции над ними

Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).

var c1: char;
var c2 := 'z';

Для преобразования символа c в код используется функция Ord(c), для обратного преобразования кода i в символ используется функция Chr(i).

begin
  var c := 'ю';
  Print(Ord(c)); // 1102
  Print(Chr(1102)); // ю
end.

Классический способ определить символ, следующий за данным в кодовой таблице, — это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:

Аналогично определяется предыдущий символ

Методы типа char

Методы, встроенные в тип char, делятся на две категории:

  • проверяющие, принадлежит ли символ указанной категории: c.IsDigit, c.IsLetter, c.IsLower, c.IsUpper
  • преобразующие символ: c.ToUpper, c.ToLower, c.ToDigit.

Отметим, что c.IsDigit эквивалентно (c >= '0') and (c <= '9') и эквивалентно c in '0'..'9'
Для c.IsLower, c.IsLower, c.IsUpper такой простой аналогии нет. Дело в том, что в этих методах проверяются все символы, являющиеся буквами в каком-то алфавите народов мира (в частности, английские и русские)

Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре — для не букв возвращается False.

Строки

Введение

Отметим, что для строк имеется много операций и методов, не все из которых мы рекомендуем для школьников.

Основная причина — многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.

Для устранения этой дилеммы при работе со школьниками мы не используем методы строк, которые работают с индексами, индексируемыми с нуля. Для них существуют эквивалентные замены внешними функциями, которые предполагают, что строки индексируются с 1.

Индексация строк

Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам — s[i].

Например:

begin
  var s: string;
  s := 'тор';
  Print(s[1],s[2],s[3]);
end.

Символы строк можно менять:

begin
  var s := 'пир';
  s[1] := 'м';
  Print(s); // мир
end.

Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца

begin
  var s := 'мир';
  s[^1] := 'г';
  Print(s); // миг
end.

Циклы по строкам

begin
  var s := 'привет';
  for var i:=1 to s.Length do
    s[i] := Chr(Ord(s[i])+1);
  Print(s);
end.  
foreach var c in s do
  Print(c);  

Операции +, *n и in

Строки можно складывать и умножать на целое положительное число

Пример. Генерация строки ‘abcdefghijklmnopqrstuvwxyz’

Идея. Начать с пустой строки. Всякий раз в цикле добавлять к строке символы от ‘a’ до ‘z’

Код

begin
  var s := '';
  for var c := 'a' to 'z' do
    s += c;
end.  

Методы Count, CountOf, Where

Чтобы посчитать количество символов в строке, удовлетворяющих определённому условию, используется метод Count. Если нужно посчитать, сколько раз встречается определенный символ, используется более простой метод CountOf

begin
  var s := 'абракадабра';
  s.CountOf('а').Print;
  s := 'а123бр45а67к89адабра';
  s.Count(c -> c.IsDigit).Print;
end.  

Если в строке надо отфильтровать только определенные символы, используется метод Where. Он возвращает последовательность символов, которую можно назад преобразовать к строке, используя метод JoinToString:

begin
  var s := 'а123бр45а67к89адабра';
  s := s.Where(c -> c.IsLetter).JoinToString;
end.  

s.ToWords и разбиение строки на слова

Метод s.ToWords разбивает строку на массив слов, используя пробел в качестве разделителя. Полученный массив можно преобразовать и слить в строку, используя метод JoinToString:

begin
  var s := 'как однажды жак звонарь головой сломал фонарь';
  var a := s.ToWords;
  Sort(a);
  s := a.JoinToString
end.  

По умолчанию JoinToString разделяет слова пробелами

Функция Pos и процедуры Delete, Insert

Pos(subs,s) возвращает позицию первого вхождения подстроки subs в сторке s или 0 если подстрока не найдена

Pos(subs,s,from) начинает искать подстроку в строке с позиции from.

Следующий код выводит позиции всех вхождений s1 в s:

begin
  var s := 'абракадабра';
  var s1 := 'бра';
  var p := Pos(s1,s);
  while p>0 do
  begin
    Print(p);
    p := Pos(s1,s,p+s1.Length);
  end;
end.

На занятии будет рассмотрен Строковый тип данных в Паскаль и примеры работы с ним

Содержание:

  • Символьный тип char в Паскале
    • Основные функции для работы с символами
  • Строковые переменные в Паскаль
  • Функции работы со строками в Pascal
  • Стандартные методы и запросы (pascalAbc.net)
    • Посимвольный ввод до пробела

Символьный тип char в Паскале

Символьной переменной соответствует тип char:

Инициализация символьной переменной:

Основные функции для работы с символами

Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:

Пример: распечатать двойную кавычку по ее коду в ASCII-таблице

1
2
3
4
5
6
7
var a:char;
    i:byte;
begin
     i:=34; {код, соответствующей символу " в ASCII-таблице}
     a:=chr(i);
     writeln(a)
end.

Функция возвращает порядковый номер символа параметра в таблице ASCII:

Пример: Распечатайте часть таблицы ASCII, конкретнее — символы, соответствующие кодам 32-255

1
2
3
4
5
var i: integer;
begin
     for i:=32 to 255 do
         write(chr(i):3);
end.

Примеры:

var c := 'Ю';
var n := Ord(c); // n := c.Code
Print(n); // 1070
c := Chr(n);
print(c); // Ю

Символьные константы: #код – символ с определенным кодом:

#10 – новая строка (Linux)
#13#10 – новая строка (Windows)
#9 – tab 
Print('a'#10'b');

Методы класса типа char

char.IsLetter(с); // буква ли, boolean
char.IsDigit(с); // десятичное ли число, boolean
char.IsLower(с); // буква нижнего регистра, boolean
char.IsUpper(с); // буква верхнего регистра, boolean
char.IsPunctuation(с); // знак препинания, boolean
 
с := char.ToLower(с) ;
с := char.ToUpper(с);

Операции для типа char

c1 < c2;// сравнение по коду
c1 > c2;
с in ['a','e','i','o','u',’y’]; // c принадлежит гласным
с in ['a'..'z','A'..'Z’]; // c принадлежит английским буквам

Задание:
Запросите ввести два символа. Определите, принадлежат ли символы английским буквам, и если да, то гласные ли это буквы. Преобразуйте в верхний регистр ту букву, код которой меньше.

Пример вывода:

Введите два символа:
u z
u - английская буква, гласная
z - английская буква, не гласная
Буква u в верхнем регистре U

Некоторые выражения:

//c принадлежит диапазону:
c.InRange('a'..'z');  
 
//Трансформация символа в цифру: 
var n := Ord(c)Ord('0');
 
// Увеличение кода символа на n: 
c := Chr(Ord(c) + n);
   // или 
Inc(c,2);

Строковые переменные в Паскаль

Строковые переменные в Паскале имеют тип 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[1]='Б'   s[2]='а'   s[3]='н'   s[4]='к'   s[5]='а'

Важно: Значения строковых переменных всегда заключаются в одинарные кавычки

Функции работы со строками в Pascal

Исходные данные Операция Результат
s1:='Мото';      s2:='роллер'
s3:=s1+s2;
s3=’Мотороллер’
s5:='Мотороллер';
k:=Pos('рол',s5);
k=5
s3:='Мотороллер';
l:=Length(s3);
l=10
s3:='астроном';
s4:=Copy(s3,3,4);
s4= ‘трон’
s5:='Коробочка';
Delete(s5,4,2);
s5=’Корочка’
s6:='Рука'; s7:='баш';
Insert(s7,s6,3);
s6=’Рубашка’
x:=2.73284;
Str(x:4:2,s8);
s8=’2.73′
s8='2.73';
Val(s8,x,Osh);
x=2.73

Пример: Подсчитать кол-во букв «f» в тексте.

Показать решение:

Паскаль PascalAbc.NET
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.
1
2
3
4
5
6
7
8
begin
  var s := readString('введите текст');
  var n := 0;
  foreach var c in s do
    if c = 'f' then
      inc(n);
  Print(n);
end.
 

Операции со строками:

s1 + s2  // конкатенация s1 и s2
s1 += s2  
s1 < s2  // лексикографическое сравнение
  'abcd' < 'aad'
s * n    // конкатенация n копий строки s
s[a:b]       // срез (индексация с 1)
s[a:b:step]  // срез с шагом
s?[3:5]   ;   // безопасный срез (не вызывает ошибок)
s?[a:b:step] // безопасный срез с шагом
s1 in s

String 1. Дан текст. Удалить в нём все слова кот. Выполнить задание двумя способами: используя стандартные функции работы со строками, и, работая со строкой как с массивом символов.

Пример выполнения:

введите строку 
мой кот - хороший кот
Результат: мой  - хороший 

* Задание повышенной сложности: запросить у пользователя ввести подстроку, которую требуется удалить из исходной строки.

String 2. Составить программу проверки, есть ли в тексте буква s. Выдавать true (если найдено) или false (если не найдено).
Примеры использования логического типа (true и false) смотрите здесь.

Пример выполнения:

Введите строку:
Hello world
Результат: false
Введите строку:
Hello students
Результат: true

String 3. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку — заменяя каждый символ текста символом, следующим по порядку в таблице ASCII. Тогда слово КОТ превратится в слово ЛПУ. Требуется составить и программу дешифровки.
Использовать функции для работы с символами: chr и ord pascal.

String 4. Дано предложение, определить количество слов в нём.
Подсказка: считать количество слов по количеству пробелов в строке.

* усложненный вариант: предусмотреть, что в начале или в конце введенной строки введен пробел

Пример: Найти количество цифр в строке.

Показать решение:

Паскаль PascalAbc.NET
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
begin
  var s := readString;
  var k := 0;
  foreach var c in s do
    if char.IsDigit(c) then
      k += 1;
  Print($'цифр  = {k}');
end.

Пример: Определить является ли данное слово перевертышем (палиндромом).

Показать решение:

Паскаль PascalAbc.NET
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.
1
2
3
4
5
6
7
8
9
10
// с помощью среза
begin
  var s := readString;
  var n := s.Length;
  var s1 := s[::-1];
  if s = s1 then
    print('перевертыш')
  else
    print('не перевертыш');
end.

String 5. Составить программу подсчета количества встречаемых в тексте сочетаний букв «ма».

String 6. Определить, встречается ли в тексте сочетание букв «ку».

Пример выполнения:

Введите строку:
Кума
Результат: да
Введите строку:
Дед
Результат: нет

String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).

Пример выполнения:

Введите строку:
Барабулька
Введите букву, которую заменить:
а
Введите букву, на которую заменить:
у
Результат: Бурубульку

String 8. Дано предложение, определить количество слов, начинающихся с буквы «к».

String 9. Дано предложение, состоящее из букв и цифр. Определить слово с наибольшим количеством букв (не цифр). В качестве подсказки можете использовать предложенный ниже алгоритм:

Пример выполнения:

Введите строку:
1234567891011слово следующееСлово иСледСлово
Слово с максимальным количеством букв:
следующееСлово 

Алгоритм:

  • После того как строка считывается (вводится), измеряется ее длина (функция length).
  • Далее стока просматривается посимвольно в цикле while или for.
  • Если символ строки входит в множество букв (const letters=['a'..'z'];), то этот символ прибавляется к первому элементу массива слов строки (... array [1..100] of string).
  • Если символ равен пробелу, то увеличиваем счетчик для массива слов и переходим к следующей итерации цикла.
  • String 10. Дано предложение. Расположить слова в нем в порядке возрастания числа букв в словах. В качестве подсказки можете использовать предложенный ниже алгоритм:

    Алгоритм:

  • В цикле до конца длины строки выполняем: если текущий символ строки — не пробел, то формируем элемент массива arrayS (arrayS: array[1..100] of string; строковый массив — будущий массив из слов предложения). Добавляя каждую букву к элементу arrayS[k].
  • При достижении пробела переходим к следующему элементу arrayS[k] и начинаем формировать следующее слово.
  • После того, как массив из всех слов arrayS сформирован: выполняем сортировку массива по длине букв в словах.
  • String 11. Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы».

    Пример:
    
    Введите имя, фамилию и отчество:
    Иван Алибабаевич Попов
    Результат:
    Попов И.А. 
    

    Примечание:
    Использовать функции: Pos, Copy, Delete

    String 12. Программа должна позволять ввести текст, и потом удалять в нем все восклицательные знаки, расположенные непосредственно перед запятой, и выводить измененный текст на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определенных действий!,
     предписание исполнителю! совершить последовательность действий!, 
    набор команд для компьютера!
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий, 
    предписание исполнителю! совершить последовательность действий, 
    набор команд для компьютера!
    

    Трудность низкая:
    Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.

    Трудность высокая:
    Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.

    А теперь рассмотрим олимпиадное задание по Паскалю:

    Задача Цезарь: Шифр Цезаря заключается в том, что каждая буква исходной строки заменяется третьей после нее буквой в алфавите, который считается написанным по кругу (все символы текста латинские и прописные).

    * Решить ту же задачу, в которой сдвиг будет не на 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.

    Стандартные методы и запросы (pascalAbc.net)

  • CountOf — количество вхождений
  • 'мама мыла раму'.CountOf('м').Print; // 4
  • Contains — содержит ли (логическая)
  • 'мама мыла раму'.Contains('б').Print; // False
  • IndexOf — индекс искомого вхождения
  • 'hello world'.IndexOf('w').Print; // 6
  • Remove — удаление вхождения
  • 'hello world'.Remove(' ').Print; // helloworld
  • Replace — замена вхождений символа на другой символ
  • 'hello world'.Replace('l','L').Print; // heLLo worLd

    и другие…

    Запросы LINQ со строками

    * LINQ (Language Integrated Query) — язык интегрированных запросов

  • Where — Фильтрация массива (последовательности) с условием
  • var sArr:=Arr('aab','bcd','efg');
    sArr.Where(w->w.Contains('b')).Print; // aab bcd
    sArr.Where(w->w.CountOf('a')=2).Print; // aab

    Задания: Предыдущие задания выполнить с использованием стандартных методов и запросов фильтрации.

    Посимвольный ввод до пробела

    Посимвольный ввод удобен для «мгновенной» обработки символов в строке.

    Пример: посимвольно считывать фамилию

    Решение:

    var name: array[1..n] of string;
        c:char;
    ...
    

    посимвольный ввод строк

    Для организации массива символьных строк:

    Пример: посимвольно считывать фамилии и заносить их в массив фамилий

    Решение:
    массив символьных строк

    String 13. Программа должна позволять ввести предложение до точки (.). Необходимо в введенном тексте вместо всех букв «ё» ставить буквы «е». Выполнить, работая со строкой посимвольно: программа должна формировать в памяти вторую строковую переменную с измененным предложением, а потом выводить ее на экран.

    Пример:

    Входной текст: 
    Алгоритм — это  правила выполнения определённых действий.
    Выходной текст:
    Алгоритм — это  правила выполнения определенных действий.
    

    String 14. с клавиатуры вводится число N, обозначающее количество студентов в группе, а затем – N строк, в каждой из которых – информация о студенте в формате:
    <Фамилия> <год рождения> <оценка>

    1. Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
    2. Вывести фамилии студентов, у которых оценка 2.
    3. Вывести фамилии студентов, родившихся в 1996 году.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    проверь себя

    Понравилась статья? Поделить с друзьями:
  • Как найти две стороны если известна площадь
  • Как составить жалобу на адвоката
  • Как найти среднюю высоту фигуры
  • Как найти другой конец провода
  • Как исправить звук в бателфилд 3