Во введенной строке удалить все символы, стоящие на нечетных местах — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Во введенной строке удалить все символы, стоящие на нечетных местах



Используется представление строки как массива символов. Вначале рассчитывается количество удаляемых символов n.

Пусть введенная строка имеет вид ‘1234567890’, Тогда n=10.

После удаления первого символа: ‘234567890’ и в полученной строке надо удалить второй символ. Результат: ‘24567890’.

В полученной строке надо удалить третий символ.

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

program ex04_05;

{ Во введённой строке удалить все символы, стоящие на нечётных местах }

var

s: string;

i,n: integer;

begin

write('Введите строку:'); readln(s);

writeln('введенная строка:',s);

n:=length(s);

if (n mod 2)=0 then n:=n div 2 else n:=(n div 2)+1;

for i:=1 to n do

delete(s,i,1);

writeln('результат:',s);

readln;

end.

Пример: вывести символы между первым и вторым многоточиями

Задание можно решить разными способами: 1) с использованием встроенных функций обработки строк; 2) просматривая строку как массив символов. Ниже приводится вариант решения с использованием встроенных функций.

Для надежности сохраним исходную строку и скопируем содержимое исходной строки в новую строку s2. Вначале определяется позиция первого двоеточия pos1 (функция Pos). Если pos1=0, то в строке нет двоеточий и работа программы прекращается. Далее удаляем из строки pos1 символов и снова ищем позицию двоеточия (pos2). Если pos2=0, то в строке только одно двоеточие и работа программы прекращается. Если второе двоеточие есть, то в результат записываем (pos2-1) символов, начиная с pos1+1.

program ex04_06;

{ вывести символы между первым и вторым многоточиями }

{ вариант 1 - с использованием встроенных функций }

var

str1, str2: string;

pos1, pos2: integer;

len, i: integer;

begin

writeln('введите строку:'); readln(str1);

pos1:=pos(':',str1);

str2:=str1;

delete(str2,1,pos1);

pos2:=pos(':',str2);

if pos1=0 then writeln('строка не содержит двоеточий!')

else

if pos2=0 then writeln('строка содержит только одно многоточие')

else str2:=copy(str1,pos1+1,pos2-1);

writeln(str2);

readln;

end.

Результат работы программы:

введите строку:

root:314159:/bin/bash

Замена первого вхождения подстроки другой подстрокой

Пусть необходимо заменить первое вхождение подстроки ‘друг’ на подстроку ‘враг’. В приведенном ниже примере замена оформлена функцией Replace. Обратите внимание, что изменяемая строка передается по ссылке (с ключевым словом var), а не по значению.

program ex04_07;

{Замена первого вхождения подстроки другой подстрокой}

{Replace(Строка, Подстрока, На что заменить):integer}

function Replace(var str:string;substr1,substr2:string): integer;

var p,ls1: integer;

begin

p:=Pos(substr1, str);

if p = 0 then Replace:=0



else begin

ls1:=Length(substr1);

Delete(str, p,ls1);

Insert(substr2, str, p);

Replace:=p;

end;

end;

 

var s:string; n: integer;

begin {головная программа}

s:='друг познается в беде';

n:=Replace(s,'друг','враг');

writeln(s);

readln;

end.

Записать строку в обратном порядке

В приведенном ниже примере использовано представление строки как массива символов. В этом случае изменяемую строку не потребовалось передавать по ссылке.

program ex04_08;

{ записать строку в обратном порядке }

 

Function Revert(S: string):string;

{Функция переворачивания строки}

var

i: byte;

Begin

Revert:='';

For i:=length(S) downto 1 do

Revert:=Revert+S[i];

End;

var str,revstr: string;

begin

readln(str);

revstr:=Revert(str);

writeln(Revstr);

readln;

end.

Изменение строки: пример использования стандартных функций

Пусть необходимо строку с фамилией, именем и отчеством вида «Перов Иван Васильевич» преобразовать в строку вида «Петров И.В.». Для наглядности предположим, что имя и отчество разделяются только одним пробелом.

Вначале находим позицию первого пробела k (1). В строку s1 копируем k+1 символов (т.е. фамилию и первую букву имени, 2). Находим длину строки s1 (3) и в позиции L+1 добавляем в эту строку точку (4). Далее из исходной строки удаляем k символов (т.е. фамилию и первый пробел) и снова ищем пробел (5,6). Затем копируем (k+1)-ый символ в строку s1 и добавляем точку (7,8,9).

program ex04_09;

{ преобразовать строку Фамилия Имя Отчество }

{ в строку Фамилия И.О. }

Var s, s1: shortString;

k, L :Integer;

Begin

//readln(s);

s := 'Дубик Николай Андреевич';

k := Pos(' ',s); // 1 k=6

s1:=Copy(s,1,k+1); // 2 'Дубик Н'

L := Length(s1); // 3

Insert('.' , s1 , L+1); // 4 'Дубик Н.'

Delete (s,1,k); // 5 'Николай Андреевич'

k := Pos(' ',s); // 6 k=8

L := Length(s1); // 7

Insert(s[k+1] , s1 , L+1); // 8 'Дубик Н.А.'

s1:=s1+'.'; // 9

WriteLn(s1);

End.


Работа с файлами

Простейший пример работы с текстовым файлом

В приведенном ниже примере создается текстовый файл с именем «test.txt», в который записываются введенные с клавиатуры строки. Программа заканчивает работу после ввода пустой строки.

program ex05_01;

{ пример работы с текстовым файлом }



var

a: string;

f: text;

begin

Assign(f,'test.txt');

Rewrite(f);

repeat

readln(a);

writeln(f,a);

until length(a)=0;

Close(f);

end.

Так как создавался текстовый файл, то его содержимое можно просмотреть в любом редакторе типа «Блокнот».

Пример работы с типизированным файлом

В приведенном ниже примере вначале производится запись целых чисел в файл test2.dat, а затем для контроля выполняется чтение из этого файла.

program ex05_02;

{ пример работы с файлом чисел integer }

var

i, a: integer;

f: file of integer;

begin

Assign(f,'test2.dat');

{ запись данных в файл }

Rewrite(f);

for i:=1 to 10 do begin

readln(a);

write(f,a);

end;

Close(f);

{ чтение из файла }

Reset(f);

while not eof(f) do begin

read(f,a);

write(a:7);

end;

writeln;

Close(f);

end.


Рекомендуемая литература

 

До сих пор подавляющее большинство учебников описывают язык программирования Turbo Pascal, хотя среда Turbo Pascal не работает на современных 64-разрядных операционных системах. Однако создатели Free Pascal сознательно создавали интерфейс максимально походим на интерфейс Turbo Pascal, а в опциях программы возможно задать совместимость с Turbo Pascal.

Поэтому практически все учебники по языку Pascal пригодны и для изучения Free Pascal. Приведенные ниже два учебника позволяют ознакомиться с возможностями Free Pascal, отсутствующими в Turbo Pascal.

 

1. Кетков, Ю. Л. Свободное программное обеспечение. FREE PASCAL для студентов и школьников/ Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM

2. Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на Free Pascal и Lazarus. - Донецк.: ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2011. - 503 с.

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

3. Культин Н. Turbo Pascal в задачах и примерах. – СПб.: БXB-Петep6ypr, 2006. – 256 c.

4. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2007. – 339 с.

 

 






Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...





© cyberpedia.su 2017 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.015 с.