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

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

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

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

2017-06-04 806
Во введенной строке удалить все символы, стоящие на нечетных местах 0.00 из 5.00 0 оценок
Заказать работу

Используется представление строки как массива символов. Вначале рассчитывается количество удаляемых символов 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 с.

 

 


Поделиться с друзьями:

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

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

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

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



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

0.031 с.