- •Часть первая
- •Предварительные сведения
- •Индекс элемента массива
- •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
3.2. Задачи для дополнительного решения
Дан двумерный массив целых чисел. В каждой его строке найти количество четных элементов.
Задача 2*. Дан двумерный массив целых чисел. В каждой его строке найти количество элементов, попадающих в промежуток от А до В.
Дан двумерный массив целых чисел. В каждом его столбце найти сумму нечетных элементов.
Дан двумерный массив. Найти число пар одинаковых "соседних" элементов в каждой строке.
Дан двумерный массив. Найти число пар одинаковых "соседних" элементов в каждом столбце.
Дан двумерный массив целых чисел. Для каждой строки выяснить имеются ли в ней положительные элементы.
Задача 7*. Дан двумерный массив целых чисел. Для каждой строки выяснить имеются ли в ней элементы, последняя цифра которых равна А.
Дан двумерный массив целых чисел. Для каждого его столбца выяснить имеются ли в нем нечетные элементы.
Дан двумерный массив. Найти строку с максимальной суммой элементов.
Задача 10*. Дан двумерный массив целых чисел. Определить минимальный номер строки, состоящей только из положительных элементов.
Дан двумерный массив целых чисел. Определить минимальный номер столбца, состоящего только из нечетных элементов.
Дан двумерный массив целых чисел. Определить минимальный номер столбца, состоящего только из элементов, больших числа 10.
Дан двумерный массив целых чисел. Определить минимальный номер столбца, состоящего только из элементов, принадлежащих промежутку от А до В.
Дан двумерный массив целых чисел. Определить есть ли в нем строка, содержащая больше положительных элементов, чем отрицательных.
Дан двумерный массив целых чисел. Определить есть ли в нем строка, в которой имеются одинаковые элементы.
3.3. Определение максимального и минимального значения в каждой строке или столбце матрицы
Алгоритм решения
Для нахождения максимального (минимального) элемента некоторой строки с номером i необходимо допустить, что первый элемент текущей строки является наибольшим (наименьшим), и организовать цикл для перебора и сравнения всех элементов данной строки. Параметром этого цикла следует выбрать номер столбца j. Циклически все последующие элементы строки i сравниваются с допустимым. Если текущее значение больше (меньше) допустимого максимума (минимума), то оно принимается за новое наибольшее (наименьшее) значение. В противном случае наибольшее значение остается прежним. Этот процесс продолжается до тех пор пока не будут сравнены все элементы текущей строки i. После окончания цикла по столбцам найденное максимальное (минимальное) значение сохраняется в массиве В. Для вычисления максимума (минимума) каждой из всех строк необходимо описанные действия повторить для всех значений i.
Схема нахождения максимума (минимума) в каждом столбце аналогична описанному алгоритму.
Программная реализация
|
для нахождения максимального значения |
для нахождения минимального значения |
в каждой строке |
FOR i = 1 TO n MAX = A(i,1) K = 1 FOR j = 2 TO m IF A(i,j) > MAX THEN MAX=A(i):K= j END IF NEXT j B(i) = MAX NEXT i |
FOR i = 1 TO n MIN = A(i,1) L = 1 FOR j = 2 TO m IF A(i,j) < MIN THEN MIN=A(i,j):L= j END IF NEXT j B(i) = MIN NEXT i |
в каждом столбце |
FOR j = 1 TO m MAX = A(1,j) K = 1 FOR i = 2 TO n IF A(i,j) > MAX THEN MAX=A(i):K= i END IF NEXT i B(j) = MAX NEXT j |
FOR j = 1 TO m MIN = A(1,j) L = 1 FOR i = 2 TO m IF A(i,j) < MIN THEN MIN=A(i,j):L= i END IF NEXT i B(j) = MIN NEXT j |
пример 17
Дана матрица чисел. Поменять местами первый и максимальный элемент массива в каждой строке.
Тест
Данные |
Результат |
|
n = 3, m = 3 |
|
|
Исполнение алгоритма
i |
j |
Проверка условия |
MAX |
K (номер MAX) |
Матрица |
1 |
|
|
A(1,1) = 1 |
1 |
|
|
2 |
A(1,2)>MAX (истина) 2>1 |
A(1,2) = 2 |
2 |
|
|
3 |
А(1,3)>MAX (ложь) 0<2 |
значение максимума остается прежним |
|
|
|
|
|
|
|
|
2 |
|
|
A(2,1) = -2 |
1 |
|
|
2 |
A(2,2)>MAX (истина) 5>-2 |
A(2,2) = 5 |
2 |
|
|
3 |
A(2,3)>MAX (ложь) 1<5 |
значение максимума остается прежним |
|
|
|
|
|
|
|
|
3 |
|
|
A(3,1) = -1 |
1 |
|
|
2 |
А(3,2)>MAX (ложь) -7<-1 |
значение максимума остается прежним |
|
|
|
3 |
A(3,3)>MAX (истина) 4>-1 |
A(3,3)=4 |
3 |
|
|
|
|
|
|
|
Блок-схема алгоритма
Начало
Ввод n,m, массив А
i=1,n
max=Ai1 ; K=1
j=2,m
+ Aij>max -
max=Aij ; K=j
Обмен значений
элементов Аi1 и АiК
Вывод матрицы А
Конец
Программа
CLS
INPUT "введи размер матрицы " ; n, m
DIM A(n, m)
PRINT "введи матрицу"
'Цикл по строкам матрицы
FOR i = 1 TO n
'Цикл по столбцам матрицы
FOR j = 1 TO m
'Ввод элементов массива
INPUT A(i,j)
NEXT j, i
FOR i = 1 TO n
'Присваивание начального значения максимума
MAX = A(i,1)
K = 1
FOR j = 2 TO m
'Нахождение максимального значения и его номера
IF A(i,j) > MAX THEN MAX = A(i,j): K = j
NEXT j
' Обмен значений элементов Аi1 и АiК
SWAP A(i,1),A(i,K)
NEXT i
'Вывод преобразованной матрицы на печать
FOR i = 1 TO n
FOR j = 1 TO m
PRINT A(i,j);
NEXT j
NEXT i
END
пример 18
Дан массив чисел. Найти номер столбца, где минимум наименьший.
Программа
CLS
INPUT "введи размер матрицы " ; n, m
DIM A(n, m), В(m)
PRINT "введи матрицу"
FOR j = 1 TO m
FOR i = 1 TO n
'Ввод элементов матрицы
INPUT A(i,j)
NEXT i, j
FOR j = 1 TO m
'Определение начального значения минимума в каждом столбце матрицы
MIN = A(1,j)
L = 1
FOR i = 2 TO n
IF A(i,j) < MIN THEN MIN = A(i,j): L = i
NEXT i
'Создание массива, состоящего из минимальных значений каждого столбца матрицы
B(j) = MIN
NEXT j
'Задание начального значения наименьшего значения среди минимумов каждого столбца матрицы
MIN1 = B(1)
L1 = 1
FOR J = 2 TO m
IF B(j) < MIN1 THEN MIN1 = B(j): L1 = J
NEXT i
PRINT "номер столбца, где самое наименьшее значение MIN =" ; L1
PRINT "его значение равно =" ; MIN1
END
