Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.DOC
Скачиваний:
23
Добавлен:
21.03.2015
Размер:
1.77 Mб
Скачать

Практическое задание n 1. 21

1. Разложить произвольное длинное целое число N на массив Z составляющих его цифр. Например, N=538, разлогается на Z[1]= 5, z[2]= 3, Z[3]= 8.

2. Определить массив всех простых чисел от 1 до N. Алгоритм состоит в нахождении чисел не делящихся нацело на ранеее найденные простые числа. Например, при Z[1]=2, Z[2]=3, проверяются числа >3, не делящиеся нацело на Z[1] и Z[2]. Наибольшее проверяемое число не превышает N.

Примечание: Установить ограничение по числу элементов массива “Z” ,

43

1. 10. 2. Работа с элементами переменной строкового типа

Переменная строкового типа (String) может рассматриваться как массив элементов символьного типа (Char). Например, если в программе определены переменные

S: string; C: char; и задано S:='Москва', то S[1]='М', S[2]='о' и т. д. и возможно присвоение, например: C:= S[1]; Таким образом строка может рассматриваться как линейный массив символов. Элементы массива, составляющие строку можно переставлять местами и получать новые слова, например:

for i:= 1 to N div 2 do begin C:= S[i]; S[i]:= S[N-i+1]; S[N-i+1]:= C end; Writeln(S);

{ исходное слово выведется справа налево: "авксоМ" }

Здесь N:= ord(S[0]); - число символов в переменной "S" хранится в переменной S[0]. Функция "ord" преобразует символьный тип в целый. N div 2 - количество перестановок для слова из "N" символов. В переменной "C" запоминается значение i-го элемента, который меняется с элементом, симметричным относительно середины строки.

Можно производить поиск и замену заданного символа в строке, например:

for i:=1 to N do if S[i]='_' then writeln('найден символ пробел');

for i:=1 to N do if S[i]='/' then S[i]:='\'; {замена символа "/" на "\"}

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

for i:=1 to N do S[i]:= chr(ord(S[i])+2); {преобразование исходных

символов в символы с кодом большим на две единицы}

Напомним, что все используемые в MS-DOS символы имеют ASCII коды от 0 до 255.

Здесь удобно также использовать функции Pred(C); и Succ(C);

Практическое задание n 1. 22

1. Зашифровать введенную с клавиатуры строку, заменой исходных символов на символы с кодом большим на три единицы. Провести дешифровку.

2. Зашифровать введенную с клавиатуры строку, заменой символов на символы с кодом меньшим на две единицы. Провести дешифровку.

3. Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвертым и т. д. Провести дешифровку.

4. Зашифровать введенную с клавиатуры строку, поменяв местами первый символ с третьим, второй с четвертым и т. д. Провести дешифровку.

Примечание к п. п. 1-4: Выводить на экран шифрованную и дешифрованную строки.

5. Найти и заменить символ в строке введенной с клавиатуры с подтверждением каждой замены. Программа должна запрашивать заменяемый и заменяющий символы, например: заменить i-ый символ "ф" на "Ф" в введенной строке? Вывести преобразованную строку на экран.

6. Определить и вывести на экран номера позиций и количество повторений заданного символа (или его кода) в строке, введенной с клавиатуры.

44

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]