Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[13]

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]. Наибольшее проверяемое число не превышает Vn.

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

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

Переменная строкового типа (String) может рассматриваться как массив элементов символьного типа (Char). Например, если в программе определены переменные S: string; C: char; и задано 8:=Москва, то 8[1]=М, 8[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.Определить и вывести на экран номера позиций и количество повторений заданного символа (или его кода) в строке, введенной с клавиатуры.

1. 10. 3. Двумерные массивы

Массивы, рассмотренные выше, имеют элементы, упорядоченные по одному индексу и называются одномерными массивами или векторами. Массив может быть двумерным, трехмерным и т. д. Двумерные массивы имеют элементы, упорядоченные по двум индексам и часто называются матрицами. В Турбо-Паскале при описании многомерного массива диапазоны изменения индексов перечисляются через запятые, например: Var A: array[1..30, 1..7] of byte;

Рассмотрим пример работы с двумерными массивами. Обозначим массивом оценки учеников класса по нескольким предметам. Каждая оценка является значением элемента массива оценок "A" и имеет порядковый номер (два индекса). Поставим в соответствие первому индексу номер фамилии в списке учеников, а второму -номер предмета, по которому получена оценка. Тогда двумерный массив оценок можно представить в виде таблицы: каждый элемент a[i, j] находится на пересечении I-ой строки и J-го столбца.

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

Годовые оценки по предметам:

Фамилия

Предмет физика

алгебра геометрия история биология

Иванов Петров

Сидоров

30. I Якупов

Можно создать одномерные массивы фамилий "S" учеников класса и наименований предметов "P" . Значением элемента массива "Р" будет наименование предмета, а индексом - порядковый номер предмета, например:

1 - физика, 2 - химия, 3 - алгебра, 4 - геометрия, 5 - история, 6 - биология.

Приведенная выше таблица может быть представлена в виде набора элементов ( число строк = N, число столбцов = M ):

Номер столбца "J":


"I"

Массив S

Массив P: P[1]

. . P[J] . .

. P[M]

a[1, 1]

a[1, 2]

a[1, 3]

a[1, 4] . .

. a[1, j] . . .

a[n, m]

Массив A: a[2, 1]

a[2, 2]

a[2, 3]

a[2, 4] .

. . a[2, j] . .

. a[2, m]

a[3, 1]

a[3, 2]

a[3, 3]

a[3, 4] . .

. a[3, j] . . .

a[3, m]

a[4, 1]

a[4, 2]

a[4, 3]

a[4, 4] . .

. a[4, j] . . .

a[4, m]

a[i, 1]

a[i, 2]

a [i, 3]

a [i, 4] . .

. a[i, j] . .

. a[i, m]

a[n, 1]

a[n, 2]

a[n, 3]

a[n, 4] .

. a[n, j ] . .

. a[n, m]

Массив оценок можно задать с использованием функции Random, например: for i:= 1 to N do for j:= 1 to M do A[i, j]:= random(4)+2;

Для вывода наименований предметов ( "шапка" таблицы ) можно использовать операторы:

Writeln;

Write(Фамилия\\Предметы: ); For i:= 1 to M do write(P[i]:9, );

Для вывода элементов массива на экран удобно использовать вложенный цикл: for i:= 1 to N do begin writeln; write(S[i]:19, ; for j:= 1 to M do write(A[i,j]:7, )end;

Для расчета массива "SS" - сумм "M" элементов в каждой из "N" строк массива "A" (NxM) можно применить операторы:

for i:= 1 to N do begin SS[i]:= 0;

for j:= 1 to M do SS[i]:= SS[i] + A[i, j] end;

Здесь для каждого индекса "i" от 1 до N происходит суммирование элементов A[i, j] по индексу "j" от 1 до M.

При модификации массива изменяется расположение данных в исходном массиве, например, в случае вставки данных из линейного массива "B" в колонку с номером "M1" необходимо сдвинуть данные в колонках J >= M1 используя операторы:

for i:= 1 to N do begin

for j:=M+1 downto M1+1 do A[i,j]:=A[i,j-1]; A[i,M1]:=B[i] end;

Если порядковый номер предмета изменится, то необходимо изменить расположение оценок в массиве "A", например, перестановку колонок с оценками по физике и химии можно сделать операторами:

for j:= 1 to N do begin

a1:=A[1,j]; A[1,j]:=A[2,j]; A[2,j]:=a1 end;



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53]