Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
37
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Копирование части строки

Задача:

Скопировать часть строки с определенной позиции и определенной длины в другую строку.

Описание переменных:

s1, s2 – первая и вторая строка;

n – позиция, с которой будет копироваться строка;

len – длина копируемой части строки.

Алгоритм решения задачи:

  1. Записать в переменную s1 исходную строку.

  2. Узнать начало второй строки и ее длину.

  3. Присвоить s2 результат выполнения функции copy().

Программа на языке Паскаль:

var

s1,s2: string;

n,len: byte;

begin

write('Input string: ');

readln(s1);

write('Place of start of copy: ');

read(n);

write('Length of copy: ');

readln(len);

s2 := copy(s1,n,len);

writeln('Your copy: ',s2);

readln

end.

Примечания:

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.

Определение длины строки

Задача:

Определить длину строки, введенной пользователем.

Описание переменных:

s – строка;

len – ее длина.

Алгоритм решения задачи:

  1. Введенная пользователем строка записывается в переменную s.

  2. Результат выполнения функции length(s) сохраняется в переменной len и, затем, выводится на экран.

Примечания:

var

s: string;

len: byte;

begin

write('Input string: ');

readln(s);

len := length(s);

writeln('Its lenght is ', len,' characters.');

readln

end.

Замена последовательности символов в строке

Задача:

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

Описание переменных:

f – файловая переменная текстового типа;

str – строка из файла;

s_out – заменяемая последовательность символов;

s_in – вставляемая последовательность символов.

Алгоритм решения задачи:

1. Открываем текстовый файл для чтения.

2. Присваиваем значения переменным s_out и s_in.

3. Выясняем длину s_out.

4. Пока не будет достигнут конец файла

____a. Считываем содержимое файла в переменную str.

____b. Пока счетчик не равен нулю

________i. Присваиваем ему индекс первого символа совпавшей последовательности.

________ii. Удаляем и вставляем последовательности символов.

Программа на языке Паскаль:

var s_out, s_in, str: string;

f : text;

i, len : integer;

begin assign(f,'c:/text.txt'); reset(f);

writeln('What cut? ');

readln(s_out);

writeln('What paste? ');

readln(s_in);

len := length(s_out);

while not Eof(f) do begin

readln(f,str);

i := 1;

while i<>0 do begin

i := pos(s_out,str);

if i<>0 then begin

delete(str,i,len);

insert(s_in,str,i);

end;

end;

end;

writeln(str);

close(f);

readln

end.

Перевод двоичного числа в десятичное

Задача:

Двоичное число, введенное пользователем программы, преобразовать в десятичное число. Результат вывести на экран.

Описание переменных:

binary – двоичное число;

n – его длина;

digit – цифра очередного разряда;

m - степень двойки;

decimal – десятичное число.

Алгоритм решения задачи:

Основная ветка программы:

1. Двоичное число хранится в программе в виде строки.

2. Измеряется его длина, т.е. количество символов. Это необходимо для возведения двойки каждого разряда в соответствующую ему степень (см. формулу).

3. В цикле перебирается каждый символ строки.

a. Символ преобразовывается в число.

b. Находится степень, в которую должна возводиться двойка. Для первого символа она на единицу меньше длины строки. Для каждого следующего уменьшается на единицу.

c. Если число разряда не равно 0, то

d. возвести двойку в степень,

e. а результат добавить к десятичному числу.

Функция возведения двойки в заданную степень:

1. Получить степень

2. Присвоить результату функции значение 1.

3. Умножать результат на 2, пока не будет достигнута заданная степень.

Программа на языке Паскаль:

var

binary: string;

n: byte;

digit: byte;

m: byte;

decimal: integer;

i: byte;

function pow2(m: byte):integer;

var i: byte;

begin pow2 := 1;

for i := 1 to m do

pow2 := pow2 * 2;

end;

begin write('Binary: ');

readln(binary);

n := length(binary);

decimal := 0;

m := n;

for i:=1 to n do begin

digit := ord(binary[i]) - ord('0');

m := m - 1;

if digit = 1 then

decimal := decimal + pow2(m);

end;

writeln('Decimal: ',decimal);

readln

end.