Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BPlab (работы по паскалю).pdf
Скачиваний:
33
Добавлен:
01.06.2015
Размер:
1.04 Mб
Скачать

15 –

8. Можно ли с помощью цикла repeat until реализовать цикл while?

Лабораторная работа 4. Использование массивов

Основные сведения

Описание массива

var имя_массивов: array [тип_индекса_1,тип_индекса_2...] of базовый_тип;

Тип индекса может быть boolean, char, перечислимый или ограниченный.

Обращение к элементу массива имя_массива[индекс_1,индекс_2...]

Элемент массива является переменной базового типа массива, и с ним можно производить любые операции, доступные для переменных этого типа.

Ввод и вывод массивов осуществляется только поэлементно.

Пример выполнения

Даны матрицы вещественных чисел A3x6 и B6x10. Вычислить матрицу C3x10 = A*B.

program PRIMER;

var A :array [1..3,1..6] of real;

B:array [1..6,1..10] of real;

C:array [1..3,1..10] of real; SUM :real;

i,j,k :integer;

begin

writeln('введите A'); for i:=1 to 3 do

for j:=1 to 6 do read(A[i,j]); writeln('введите B');

for i:=1 to 6 do for j:=1 to 10 do

read(B[i,j]); for i:=1 to 3 do

for j:=1 to 10 do begin SUM:=0;

for k:=1 to 6 do SUM:=SUM+A[i,k]*B[k,j];

C[i,j]:=SUM

end; writeln('матрица C:'); for i:=1 to 3 do begin

for j:=1 to 10 do write(C[i,j]:7);

writeln end

end.

Варианты заданий

1.Дана целочисленная матрица размером Nx3 и целые числа k,i, такие, что 1kN, 1iN. Преобразовать матрицу так, чтобы строка с исходным номером k непосредственно следовала за строкой с исходным номером i, сохранив порядок следования остальных строк.

2.Дана квадратная вещественная матрица A размером NxN и вектор B размером N. Найти

решение треугольной системы уравнений:

a1,1x1+ a1,2x2+...

+

a1,NxN

= b1,

a2,2x2+...

+

a2,NxN

= b1,

. . . . .

 

 

 

16 –

aN,NxN = bN,

где коэффициенты ai,j – элементы матрицы A, а bi – элементы вектора B.

3. Дана вещественная матрица размером 7x7, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом матрицы. Если произведение положительно, изменить у элементов четных строк исходной матрицы знаки на противоположные. Если произведение равно 1, обнулить все элементы, находящиеся выше главной диагонали. Если произведение отрицательно, поменять первый и последний столбцы матрицы местами.

4.Дана символьная матрица размером 13x18. Найти номер последнего по порядку столбца, в котором содержится наибольшее количество попарно различных символов.

5.Определить, является ли заданная целая квадратная матрица 5-го порядка магическим

квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. Если матрица является магическим квадратом, то транспортировать ее относительно побочной диагонали. Если не является, то поменять местами строки по схеме: 12, 23...51.

6. Дана символьная квадратная матрица порядка N. Сформировать булевский вектор B из N элементов таким образом, чтобы B[i]=TRUE , когда в строке i исходной матрицы количество символов ? не меньше количества символов !. В остальных случаях B[i]=FALSE. Если в полученном векторе B значений TRUE больше, чем FALSE, то заменить пробелами все элементы исходной матрицы, находящиеся ниже главной диагонали. Если количество значений FALSE больше, чем TRUE, то поменять местами строки матрицы по схеме: 12, 34 и т.д. Если количество значений TRUE равно количеству значений FALSE , то транспонировать матрицу относительно побочной диагонали.

7. Таблица футбольного чемпионата задана квадратной матрицей порядка N, в которой все элементы главной диагонали не используются, а каждый элемент, не принадлежащий главной диагонали, равен количеству очков, набранных в игре командой, игравшей на своем поле: 2 – выигрыш, 1 – ничья, 0 – поражение. Для команды i (1iN) в строке i указано количество очков, полученных на своем поле, а в столбце i – количество очков, потерянных на чужом поле. Найти: количество и номера команд, имеющих больше побед, чем поражений, и номера команд, не имевших поражений в чемпионате.

8.Таблица футбольного чемпионата задана аналогично варианту 7. Найти номера команд, выигравших более половины игр. Сформировать список номеров команд, участвовавших в чемпионате, в порядке невозрастания количества набранных очков.

9.Таблица футбольного чемпионата задана аналогично варианту 7. Сформировать список номеров команд, имеющих больше побед на чужом поле, чем на своем. Определить номера двух команд, набравших меньше всего очков.

10.Таблица футбольного чемпионата задана аналогично варианту 7. Найти номера команд, занявших первые 3 места в чемпионате. Среди оставшихся команд найти набравшую больше всего очков в играх с командами, занявшими 3 первых места.

11.Таблица футбольного чемпионата задана аналогично варианту 7. Найти команду, набравшую больше всего очков на чужом поле. Вывести список номеров команд, у которых поражений больше, чем побед.

Контрольные вопросы

1.Описать переменную Y как переменную, принимающую только целочисленные значения в диапазоне от 20 до 35.

2.Можно ли задать переменную ограниченного типа, принимающую значения, ограниченные на отрезке [2,7; 5,7] ?

3.Какие из приведенных ниже описаний массивов являются неправильными и почему ?

а) var A: array[1..20] of real; б) type MAS=array[’A’..’D’];

var A: MAS;

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