Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турбо Паскаль (паскалер).doc
Скачиваний:
19
Добавлен:
03.05.2019
Размер:
2.65 Mб
Скачать

Занятие 4. Перестановка элементов массива.

Рассмотрим задачу о перестановки двух столбцов (аналогично и для строк), так как многие задачи используют именно это действие.

Задача. Поменять местами столбцы с номерами m1 и m2.

Эту задачу можно реализовать несколькими способами. Мы составим две процедуры, причем процедура обмена столбцами содержит в себе процедуру обмена значениями двух переданных ей ячеек массива. Рассмотрите их.

Procedure Swap2(Var X : MyArray2; n, m, m1, m2 : integer;);

Var

i, j : integer;

Procedure Swap1(Var elem1, elem2 : integer);

Var

z : integer;

Begin

z:=elem1;

elem1:=elem2;

elem2:=z;

End;

Begin

if((m1<1) or (m1>m)) or ((m2<1) or (m2>m))

then

writeln('?')

else

for i := 1 to m do

Swap1(X[i, m1], X[i, m2]);

End;

Вопрос. Какое сообщение должно быть выведено оператором writeln вместо знака вопроса и почему?

Задание. Выберите с учителем задачи из предложенного списка. Решите их, применяя подпрограммы, приготовьте для проверки 3-4 различных теста.

Задачи для самостоятельного решения

1. В квадратном массиве поменять местами строку и столбец, на пересечении которых находится ноль. Если такого элемента нет, то вывести сообщение об этом.

2. Поменять местами каждые две строки массива.

3. В каждой строке переставить первый отрицательный и последний положительный элементы. Поменять местами столбцы, в которых находятся первый встреченный максимальный и последний минимальный элементы. Если такого столбца или строки нет, то вывести сообщение об этом.

4. Если количество столбцов нечетно, то поменять первый и средний столбец, если четно, то средние два столбца поменять с первым и последним соответственно.

5. Поменять местами первую строку и строку, в которой находится первый нулевой элемент.

6. В двумерном массиве переставить строки следующим образом: первую с последней, вторую с предпоследней и так далее. Если строк нечетное количество, то средняя останется неизменной, иначе средние строки тоже меняем местами.

7. Дан двумерный массив. Расставить его столбцы следующим образом: последний, предпоследний, ..., второй, первый.

8. Дан двумерный массив. Начиная с первой строки, сдвинуть все строки на две вниз, а последние две перенести на место первых двух строк.

9. Первые k столбцов сдвинуть назад, а последние k поставить на место первых.

10. Дан двумерный массив. Расставить его строки следующим образом: первая, последняя, вторая, предпоследняя, третья, ... .

11. Начиная с k-го столбца, сдвинуть их вперед, а первые k поставить на место последних.

Файл сохраните на дискете, листинг сдайте учителю для оценки.

Занятие 5. Самостоятельное решение задач.

Выберите с учителем задачи из предложенного ниже списка.

I. Заполнение и анализ элементов массива

1. Заполнить квадратный двумерный массив таким образом, чтобы на главной диагонали были расположены числа от N до 1, под главной диагональю нули, а над главной диагональю по строкам числа в порядке возрастания от заданного. Используйте подпрограммы для решения каждой частной задачи.

2. Заполнить квадратный двумерный массив по следующему правилу: элементы главной диагонали равны 1, ниже главной диагонали – 0, а выше – сумме индексов. Используйте подпрограммы для решения каждой частной задачи.

3. Заполните квадратный массив единицами в шахматном порядке, начиная с верхнего левого угла. Используйте подпрограммы для решения каждой частной задачи.

4. Заполните двумерный массив с клавиатуры только числами кратными трем, предусмотрите защиту элементов этого массива от неправильного ввода и найдите сумму тех элементов массива, которые без остатка делятся на 9. Используйте подпрограммы для решения каждой частной задачи.

5. Заполните двумерный массив с клавиатуры только неотрицательными числами, предусмотрите защиту элементов этого массива от неправильного ввода. Найдите число нулевых элементов, расположенных в нечетных строках. Используйте подпрограммы для решения каждой частной задачи.

6. Заполните двумерный массив с клавиатуры только простыми числами, предусмотрите защиту элементов этого массива от неправильного ввода. Найдите сумму элементов, имеющих нечетную сумму индексов. Используйте подпрограммы для решения каждой частной задачи.

7. Заполняя двумерный массив с клавиатуры, предусмотрите замену вводимых отрицательных элементов на (-1), положительных на 1, нулевые оставить без изменения. Найдите число элементов, равных (-1), расположенных в четных строках. Используйте подпрограммы для решения каждой частной задачи.

8. Для данного двумерного массива найти среднее арифметическое наибольшего и наименьшего значений ее элементов и замените им все элементы заданной строки. Используйте подпрограммы для решения каждой частной задачи.

9. Определите, имеются ли в двумерном массиве строки, равные первой строке. Если есть, выведите их индексы на экран. Используйте подпрограммы для решения каждой частной задачи.

10. Для данного двумерного массива укажите индексы тех элементов, сумма которых равна заданному числу (если такие есть). Если таких элементов нет, вывести об этом сообщение. Используйте подпрограммы для решения каждой частной задачи.

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

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