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

Задачи на удаление элементов

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

2. Удалите строки, содержащие ноль, а затем столбцы, в которых только отрицательные элементы. Если такого столбца или строки нет, то вывести сообщение об этом.

3. Удалите строки, содержащие более одного максимального элемента, а затем столбцы, сумма элементов которых равна заданному числу. Если такого столбца или строки нет, то вывести сообщение об этом.

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

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

6. Если в столбцах, встретился элемент, равный сумме первых двух элементов текущего столбца, то удалите строки, в которых они находятся. Удалите столбцы, в которых первый элемент нулевой. Если такого столбца или строки нет, то вывести сообщение об этом.

НЕ нашли? Не то? Что вы ищете?

7. Удалите все столбцы, в котором находится минимальный элемент, а затем строки, в которых больше одного максимального элемента. Если такого столбца или строки нет, то вывести сообщение об этом.

8. Удалить строки с номерами, кратными k, и столбцы, в которых нет отрицательного элемента. Если такого столбца или строки нет, то вывести сообщение об этом.

9. Удалить все столбцы, с номерами, оканчивающимися нулем, а затем строки, в которых на четных местах находятся нули, а на нечетных – единицы. Если такого столбца или строки нет, то вывести сообщение об этом.

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

11. Удалите столбцы, в которых есть заданный элемент, а затем строки, сумма элементов первой половины которых больше суммы элементов второй половины. Если такого столбца или строки нет, то вывести сообщение об этом.

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

Занятие 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. Дан двумерный массив. Найдите сумму элементов столбца и строки массива, на пересечении которых находится нулевой элемент. Используйте подпрограммы для решения каждой частной задачи.

II. Работа с одномерным и двумерным массивами

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

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

3. Вычислите сумму элементов, находящихся на пересечении текущей строки и двух диагоналей двумерного квадратного массива, и запишите их в одномерный массив. Найдите наибольший из этих элементов. (Элементами i-й строки, лежащими на диагоналях, являются ai, j и ai, n-j+1). Используйте подпрограммы для решения каждой частной задачи.

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

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

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

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

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

Из за большого объема этот материал размещен на нескольких страницах:
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70