Здавалка
Главная | Обратная связь

Многомерные массивы и процедуры



Часть I

1)Одинаковы ли типы?

array [1..15,0..3] of char

array [1..15] of array [0..3] of char

2)Определите значение переменной y после выполнения следующей программы:

program massiv;

const N = 3;

type TMatrix = array[1..3, 1..3] of integer;

procedure test(var a: TMatrix);

begin

a[1, 1]:=4; a[1, 2]:=6; a[1, 3]:=3;

a[2, 1]:=1; a[2, 2]:=7; a[2, 3]:=2;

a[3, 1]:=8; a[3, 2]:=5; a[3, 3]:=4;

end;

var M: TMatrix;

y, i, j: integer;

begin

test(M);

M[1,1]:=0; y:=0;

for i:=1 to N do for j:=1 to N do y:=y+M[i, j];

end.

3)type STR = array [1..20] of char;

MATR1 = array [1..10] of STR;

MATR2 = array [1..15,1..20] of char;

var A: MATR1; B, C: MATR2; T: boolean; X: STR;

a)Укажите тип переменных A, A[3], A[9][8], A[1,1], B, B[15], B[3,3], B[2][6]

b)Какие из указанных операций допустимы:

B:=C; B:=B+C; T:=B<>C; A[1]:=A[8]; X:=A[3]; C[5]:=X; C[5]:=C[1];  

4)Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10 следующим образом:

0 0 0 ... 0

0 1 0 ... 0

0 0 2 ... 0

...

0 0 0 ... 9

5)TYPE VECTOR = array [1..20] of integer;

MATRIX = array [1..20] of VECTOR;

MATRIX1 = array [1..20,1..20] of integer;

VAR A: MATRIX;

X: VECTOR;

B: MATRIX1;

a)Напишите процедуру Change(A, X), заменяющую нечетные строки матрицы А на Х.

b)Напишите процедуру Change(B,X), заменяющую четные столбцы матрицы B на X.

c)Напишите процедуру Move(A), меняющую местами 1 и 2 строки, 3 и 4, ..., 19 и 20, используя массив X как вспомогательный буфер.

d)Напишите аналогичную процедуру для B.

Часть II

1)const n=10;

type matr = array[0..n, 0..n] of integer;

Напишите функцию Max(A: matrix): integer; определяющую максимальный элемент матрицы в заштрихованной области

1.
             
             
             
             
             
             
             
2.
             
             
             
             
             
             
             
3.
             
             
             
             
             
             
             
4.
             
             
             
             
             
             
             
5.
             
             
             
             
             
             
             
6.
             
             
             
             
             
             
             
7.
             
             
             
             
             
             
             
8.
             
             
             
             
             
             
             
9.
             
             
             
             
             
             
             
10.
             
             
             
             
             
             
             
11.
             
             
             
             
             
             
             
12.
             
             
             
             
             
             
             
13.
             
             
             
             
             
             
             
14.
             
             
             
             
             
             
             
 

2)Напишите логическую функцию TEST(A, k), принимающую значение True, если

1. Все элементы k-го столбца нулевые

2. Элементы k-го столбца упорядочены по возрастанию

3. k-я строка симметрична

4. Первый элемент k-й строки является максимальным в строке

5. Сумма элементов k-го столбца больше суммы элементов k-й строки

6. Все элементы k-й строки равны элементам 1-й строки

7. Сумма элементов k-го столбца больше суммы элементов побочной диагонали

8. Максимальный элемент k-й строки стоит в k-м столбце

9. Минимальный элемент k-го столбца равен нулю

10. Все элементы k-й строки совпадают с элементами к-го столбца

11. Минимальный элемент k-й строки равен максимальному элементу k-го столбца

12. k-я строка совпадает с k+1 (при k=10 совпадает с 1-й строкой)

13. Все элементы k-й строки есть в k-ом столбце

14. Или k-ый столбец или k-ая строка матрицы A – палиандромы

Строковый тип

Часть I

1)Написать программу, печатающую только строчные русские буквы, входящие в строку.

2)Текст задан строкой: var s: string;

a)Написать программу, которая выводит все слова, содержащие букву 'a';

b)Написать программу, которая выводит все слова, цифр в которых больше чем букв.

3)Составить функцию UpcaseCyr(W:string):string, преобразующую все буквы, входящие в строку W (латинские и кириллицу) в прописные.

Часть II

1)Текст задан строкой: var St: string

1. Напечатать все слова, отличные от Hello

2. Напечатать то слово, которое лексикографически (по алфавиту) предшествует всем другим словам

3. Напечатать текст, составленный из последних литер всех слов

4. Напечатать текст, составленный из средних литер всех нечетных слов

5. Напечатать все слова, содержащие удвоенное н ("нн")

6. Напечатать те слова, которые являются симметричными (например: казак, шалаш)

7. Напечатать все слова, удалив из них первую букву

8. Напечатать все слова, удалив из них последнюю букву

9. Напечатать все слова, удалив из них все последующие вхождения первой буквы

10. Напечатать все слова, удалив из них все предыдущие вхождения последней буквы

11. Напечатать все слова, удалив среднюю букву у слов нечетной длины

12. Напечатать все слова, перенеся их первую букву в конец

13. Напечатать все слова, перенеся их последнюю букву в начало

14. Напечатать все слова, содержащие только русские буквы

2)Написать функцию

function Test(word:string): boolean

принимающую значение True, если

1. Строка является словом

2. Первая буква строки входит в нее еще раз

3. Последнее слово строки входит в нее еще раз

4. Буквы строки упорядочены по алфавиту

5. Количество гласных (a, e, i, o, u) превосходит количество других символов

6. Количество заглавных букв в строке превосходит количество прописных

7. Количество русских букв в строке превосходит количество латинских

8. Строка составлена только из строчных русских букв

9. В строке больше букв, чем знаков

10. В строке есть восклицание (!) и вопрос (?)

11. Строка является символьным представлением натурального числа ("122", "34" и т.д.)

12. В строку входят литеры, содержащиеся в глобальной переменной W типа string

13. Строка является идентификатором

14. Строка является перевертышем

Тип Запись

Часть I

1)Определите значение переменной y после выполнения следующей программы и поясните, что она вычисляет:

program zapis;

const N = 3;

type TMyPoint = record

x, y: integer;

end;

var p1, p2: TMyPoint;

y: real;

begin

p1.x := 3; p1.y := 6;

p2.x := 7; p2.y := 9;

y := sqrt( sqr(p2.x - p1.x) + sqr(p2.y - p1.y));

end.

2)Ответьте на вопросы:

a)Верно ли, что все поля записи должны быть разных типов?

b)Могут ли названия полей записи совпадать с именами переменных, констант? С названиями полей других записей?

3)Опишите следующий объект в виде массива и в виде записи. Определите, какой тип более естественен для каждого из объектов:

a)обозначение поля шахматной доски (A5, H8,...);

b)комплексное число;

c)точка в 10-мерном пространстве.

4)type complex = record re, im:real end;

point = record x, y: real end;

var z, w: complex;

p: point;

re: real;

Какие значения будут иметь переменные z, w, p, re после выполнения операторов:

with z do begin re :=0; im:=1 end;

w:=z; re:=2;

with z do re:=1;

with z, w do im:= -im;

with p do begin x:=re; y:=2 end;

5)type circle = record radius:real;

centre: record x,y:real end

end;

var C: circle;

Требуется получить круг С радиуса 2.5 с центром в точке(0, 1.8). Запишите операторы для решения этой задачи.

6)Напишите процедуры DP(d,p), преобразующую координаты точки на плоскости из декартовых координат d в полярные p, и PD(p,d), выполняющую обратные преобразования:

Type dekart = record x, y: real end;

polar = record r, fi: real end;

7)Type Phone = 1000000..9999999;

Aguant = record

Name: string[10];

Number: Phone;

end;

Page = array[1..20] of Aguant;

NoteBook = array ['A'..'Z'] of Page;

Считая, что на каждой странице записной книжки указаны фамилии, начинающиеся с одной буквы (индекса этой страницы), описать логическую функцию:

a)FindNumber(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом F, и если есть, то возвращающую номер его телефона NP;

b)FindName(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом c номером телефона NP, и если есть, то возвращающую его фамилию F.

8)Const N= 10;

Type RecData = record

Key: LongInt;

Data: String;

end;

Table = array[1..N] of RecData;

Считая, что в таблице все записи имеют разные ключи, описать:

a)процедуру Sort(T), упорядочивающую записи таблицы Т по возрастанию их ключей;

b)логическую функцию Find(T, K, H), определяющую, есть ли в таблице Т (записи которой упорядочены по ключам) запись с ключом К, и если есть, присваивающую ее номер параметру Н.

Часть II

1)type name = (Mary, Jane, Kim, Bob, Jan, Pit, Tom, Sara);

data = record

male: boolean; {пол: true - мужской, false - женский}

height:140..200 end; {рост}

end;

group = array[name] of data;

1. Опишите функцию FHeight(G), определяющую средний рост женщин из группы G

2. Опишите функцию MaxHeight(G), определяющую наибольший рост женщин из группы G

3. Опишите функцию Higher(G), определяющую имя самого высокого мужчины из группы G

4. Опишите функцию Lower(G), определяющую имя самой невысокой женщины из группы G

5. Опишите функцию Lower(G), определяющую имя самого невысокого мужчины из группы G

6. Опишите функцию MHeight(G), определяющую средний рост мужчин из группы G

7. Опишите логическую функцию Same(G), проверяющую, есть ли в группе G хотя бы два человека одного роста

8. Опишите логическую функцию SameMale(G), проверяющую, есть ли в группе G хотя бы два мужчины одного роста

9. Опишите логическую функцию Test(G), проверяющую, что в группе G самая высокая из женщин ниже самого высокого из мужчин

10. Опишите логическую функцию Test(G), проверяющую, что в группе G самая высокая из женщин ниже самого низкого из мужчин

11. Опишите логическую функцию Test(G), определяющую, есть ли среди женщин группы G женщины с ростом x

12. Опишите функцию Name(G), определяющую имя мужчины из группы G с ростом x

13. Опишите логическую функцию Test(G), проверяющую, есть ли в группе G хотя бы один мужчина, рост которого меньше минимального женского роста

14. Опишите функцию CountMaxHeight(G), определяющую количество женщин в группе G, имеющих наибольший рост







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.