- •Часть первая
- •Предварительные сведения
- •Индекс элемента массива
- •1.1. Объявление массива
- •Dim имя1 (индекс1) [, имя2 (индекс2), ...]
- •[Нижний to] верхний [, нижний to] верхний ...
- •1.2. Ввод и вывод элементов массива
- •1.3. Задачи для дополнительного решения
- •2. Примеры решения типовых задач с использованием одномерных массивов
- •2.1. Определение суммы, произведения, количестваэлементов массива
- •2.2. Задачи для дополнительного решения
- •2.3. Определение максимального и минимального значения в массиве
- •2.4. Задачи для дополнительного решения
- •2.5. Определение первого вхождения определенного значения
- •1 Способ (с помощью оператора цикла for...Next)
- •2 Способ (с помощью оператора цикла while...Wend)
- •2.6. Задачи для дополнительного решения
- •2.7. Определение k-го вхождения определенного значения
- •1 Способ (с помощью оператора цикла for...Next)
- •2 Способ (с помощью оператора цикла while...Wend)
- •2.8. Задачи для дополнительного решения
- •Удаление элемента из массива
- •Задачи для дополнительного решения
- •Вставка элемента в заданную позицию
- •Задачи для дополнительного решения
- •3. Примеры решения типовых задач с использованием двумерных массивов
- •3.1. Определение суммы, произведения, количества в каждой строке или столбце
- •3.2. Задачи для дополнительного решения
- •3.3. Определение максимального и минимального значения в каждой строке или столбце матрицы
- •3.4. Задачи для дополнительного решения
- •3.5. Определение первого вхождения определенного значения в каждую строку и столбец матрицы
- •1 Способ (используя оператор цикла for...Next)
- •2 Способ (с помощью оператора цикла while...Wend)
- •3.6. Задачи для дополнительного решения
- •3.7. Главная и побочная диагональ матрицы
- •Задачи для дополнительного решения
- •Удаление строки или столбца из матрицы
- •Задачи для дополнительного решения
- •3.10.Включение строки или столбца в матрицу
- •3.11. Задачи для дополнительного решения
- •Часть вторая задания для организации самостоятельной работы студентов
- •Дан одномерный элемент. Удалить все отрицательные элементы из массива.
- •Задача 3 (стр.62)
- •Задача 4 (стр. 67)
- •2. Примеры решения типовых задач с использованием одномерных массивов . . . . . .
- •420008, Казань, Университетская, 17 – 319
Удаление строки или столбца из матрицы
Алгоритм решения
Допустим, что требуется удалить строку (столбец) под номером К. Для этого необходимо все строки, следующие за строкой под номером К, переместить на строку вверх. При удалении столбцов – все столбцы, следующие после столбца под номером К, перемещаются влево на один столбец.
Программная реализация
Удаление строки |
Удаление столбца |
FOR i = K TO n - 1 FOR j = 1 TO m A(i,j) = A(i + 1,j) NEXT j,i n = n – 1 |
FOR j = K TO m – 1 FOR i = 1 TO n A(i,j) = A(i, j + 1) NEXT i,j m = m – 1 |
пример 22
Дана матрица чисел. Найти минимальный элемент побочной диагонали матрицы. Удалить строку, где находится минимальный элемент.
Тест
Данные |
Результат |
|
n = 3 |
|
|
Исполнение алгоритма
Нахождение минимального элемента побочной диагонали |
|||||||
i |
j |
Проверка условия для определения побочной диагонали |
Проверка условия для нахождения min |
min |
K (номер min) |
||
|
|
|
|
=A(1,3) = 0 |
=1
|
||
2 |
|
|
|
|
|
||
|
1 |
i+j=n+1 (ложь) 2+14 |
|
|
|
||
|
2 |
i+j=n+1 (истина) 222+2=4 |
A(2,2)<min (истина) -5<0 |
=A(2,2)=-5 |
=2
|
||
|
3 |
i+j=n+1 (ложь) 2333333+34 |
|
|
|
||
3 |
|
|
|
|
|
||
|
1 |
i+j=n+1 (истина) 33+1=4 |
A(3,1)<min (ложь) -1>-5 |
значение остается прежним |
|
||
|
2 |
i+j=n+1 (ложь) 3+24 |
|
|
|
||
|
3 |
i+j=n+1 (ложь) 3+34 |
|
|
|
||
Удаление строки с минимальным элементом побочной диагонали |
|||||||
i |
j |
Сдвиг |
Массив |
N |
|||
2 |
|
|
|
|
|||
|
1 |
А(2,1)=A(3,1) |
|
|
|||
|
2 |
А(2,2)=A(3,2) |
|
|
|||
|
3 |
А(2,3)=A(3,3) |
|
|
|||
|
|
|
|
n=n-1=3-1=2 |
|||
Блок-схема алгоритма
Начало
Ввод n, массив А
min=A1n ; K=1
i=2,n
j=1,n
+ i+j=n+1;Aij<MIN -
MIN=Aij K=i
+ -
i=K,n-1
-
j=1,n
Aij=Ai+1j
Вывод массива Aij
Конец
Программа
CLS
INPUT "введи размер матрицы " ; n
DIM A(n, n)
PRINT "введи матрицу"
FOR i = 1 TO n
FOR j = 1 TO n
'Ввод элементов матрицы
INPUT A(i,j)
NEXT j, i
'Задание начального значения минимального элемента побочной диагонали
min = A(1,n) : K = 1
FOR i = 1 TO n
FOR j = 2 TO n
'Нахождение наименьшего значения побочной диагонали матрицы
IF i + j = n + 1 AND A(i,j) < min THEN
min = A(i,j) :K = i
END IF
NEXT j
NEXT i
'Удаление строки с минимальным значением побочной диагонали матрицы
FOR i = K TO n - 1
FOR j = 1 TO n
A(i,j) = A(i + 1,j)
NEXT j,i
n = n - 1
FOR i = 1 TO n
FOR j = 1 TO n
'Вывод матрицы на печать
PRINT A(i,j);
NEXT j
NEXT i
END
пример 23
Дана матрица чисел. Удалить все столбцы, где есть нули.
Программа
CLS
INPUT "введи размер матрицы " ; n,m
DIM A(n, m), B(m)
PRINT "введи матрицу"
FOR i = 1 TO n
FOR j = 1 TO m
'Ввод элементов матрицы
INPUT A(i,j)
NEXT j, i
FOR j = 1 TO m
FOR i = 1 TO n
'Нахождение нулевого элемента в каждом столбце матрицы
IF A(i,j) = 0 THEN flag = 1
NEXT i
'Если в столбце нулевой элемент найден, то номер столбца запоминается в массиве В
IF flag = 1 THEN L = L + 1: B(L) = j
flag = 0
NEXT j
C = 0
FOR z = 1 TO L
FOR j = B(z - C) TO m – 1
FOR i = 1 TO n
A(i,j) = A(i, j + 1)
NEXT i,j
C = C + 1
m = m – 1
NEXT z
FOR i = 1 TO n
FOR j = 1 TO m
'Вывод элементов матрицы
PRINT A(i,j);
NEXT j
NEXT i
END
