Строки и символы. Тексты программ

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

Определение кода по символу и символа по коду

var 
  c: char;
  code: integer;
begin
  c := 'z';
  code := Ord(c);
  writeln('Код символа ',c,' равен ',code);
  code := 35;
  c := Chr(code);
  writeln('Символ с кодом ',code,' - это ',c);
end.

Преобразование цифрового символа в соответствующее однозначное число и обратно

var 
  c: char;
  digit: integer;
begin
  c := '5';
  digit := Ord(c) - Ord('0');
  writeln('Цифра, соответствующая символу ''',c,''' - это ',digit);
  digit := 7;
  c := Chr(digit + Ord('0'));
  writeln('Символ цифры ',digit,' - это ''',c,'''');
end.

Преобразование числа в строку и обратно

var 
  s: string;
  num: integer;
begin
  s := '356';
  num := StrToInt(s);
  writeln('Число, соответствующее строке ''',s,''' - это ',num);
  num := 563;
  s := IntToStr(num);
  writeln('Строка, соответствующая числу ',num,' - это ''',s,'''');
end.

Формирование строки из n одинаковых символов

var 
  c: char;
  s: string;
  n: integer;
begin
  n := 10;
  c := 'z';
  s := '';
  for var i:=1 to n do
    s += c;
  writeln(s);
end.

Замена всех маленьких английских букв в строке соответствующими большими

var s: string := 'Hello, World!';
begin
  var dist := Ord('a')-Ord('A');
  for var i:=1 to s.Length do
    if s[i] in ['a'..'z'] then
      s[i] := Chr(Ord(s[i])-dist);
  writeln(s);
end.

Сумма записанных в строке чисел

var 
  s: string := '1 2 4 8 16 32 64 128 256 512';
  sum: integer;
  num,p: integer;
  numstr: string;
begin
  sum := 0;
  while s.Length>0 do
  begin
    while s[1]=' ' do // Удаление лидирующих пробелов
      Delete(s,1,1);
    p := Pos(' ',s); // Поиск следующего пробела
    if p=0 then      // Если он не найден, то до конца строки находится последнее число
      p := s.Length;
    numstr := Copy(s,1,p);
    Delete(s,1,p);
    num := StrToInt(numstr);
    sum += num;
  end;
  writeln('Сумма чисел строки равна ',sum);
end.

Количество вхождений подстроки в строку

var 
  s: string := 'this bra is abracadabra';
  subs := 'bra';
  count: integer;
begin
  count := 0;
  var scopy := s;
  while s.Length>0 do
  begin
    var p := Pos(subs,s); // Поиск подстроки в строке
    if p=0 then       
      break;
    count += 1;
    Delete(s,1,p+subs.Length);
  end;
  writelnFormat('Количество вхождений ''{0}'' в ''{1}'' равно {2}',subs,scopy,count);
end.

Ссылки