Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_Метод_Часть_4_Массивы.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
620.54 Кб
Скачать
    1. Задачи для дополнительного решения

  1. Дан двумерный массив целых чисел. Удалить из него первый из столбцов, количество нулей, в котором равно заданному числу.

  2. Дан двумерный массив. Удалить строку и стол­бец, на пересечении которых расположен наименьший по модулю элемент массива.

Задача 3*. Дан двумерный массив. Удалить из него первую из строк, сумма элементов которых не превышает заданное число.

  1. Дан двумерный массив. Удалить из него две строки, одна из которых расположена перед s1-й строкой, а вторая — перед s2-й.

Задача 5. Дан двумерный массив. Удалить из него все столбцы с s1-го по s2-й (s1 < s2).

3.10.Включение строки или столбца в матрицу

Алгоритм решения

Допустим, что необходимо включить массив В в строку (столбец) по номером К. В этом случае перед включением, все строки, начиная с К строки, необходимо сдвинуть вниз, а для столбцов право. Перемещение строк или столбцов начинают с конца. Затем элементы массива В присваиваются элементам К строки (столбца).

Программная реализация

Вставка строки

Вставка столбца

FOR i = n TO K STEP –1

FOR j = 1 TO m

A(i+1, j) = A(i, j)

NEXT j, i

FOR j = 1 TO m

A(K, j) = B(j)

NEXT j

n = n + 1

FOR j = m TO K STEP –1

FOR i = 1 TO n

A(i, j +1) = A(i, j)

NEXT i, j

FOR i = 1 TO n

A(i, K) = B(i)

NEXT i

m = m + 1

пример 24

Дан двумерный массив. Вставить в него строку из чисел 100 после строки с номером s.

Тест

Данные

Результат

n = 3

s = 1

Исполнение алгоритма

i

j

Сдвиг

Массив

n

3

1

А(4,1)=A(3,1)

2

А(4,2)=A(3,2)

3

А(4,3)=A(3,3)

2

1

А(3,1)=A(2,1)

2

А(3,2)=A(2,2)

3

А(3,3)=A(2,3)

Вставка чисел 100 после строки под номером 1

j

Вставка

Массив

n

1

A(2,1)=100

2

A(2,2)=100

3

A(2,3)=100

n=n+1=3+1=4

Блок-схема алгоритма

Начало

Ввод n,m,s

Ввод матрицы А

i=n,s+1

j=1,m

Ai+1j=Aij

j=1,m

As+1j=100

Вывод массива A

Конец

Программа

CLS

INPUT "введи размер матрицы " ; n,m

DIM A(n + 1, m)

PRINT "введи матрицу"

FOR i = 1 TO n

FOR j = 1 TO m

'Ввод элементов матрицы

INPUT A(i,j)

NEXT j, i

INPUT "введи номер строки " ; s

'Сдвиг всех строк матрицы, начиная со строки следующей за строкой s , на одну позицию вниз

FOR i = n TO s + 1 STEP –1

FOR j = 1 TO m

A(i+1, j) = A(i, j)

NEXT j, i

'Вставка чисел 100 после строки под номером s

FOR j = 1 TO m

A(s+1, j) = 100

NEXT j

n = n + 1

FOR i = 1 TO n

FOR j = 1 TO m

PRINT A(i,j);

NEXT j

PRINT

NEXT i

END

пример 25

Дан двумерный массив. Вставить в него строку из нулей после первой из строк, количество нулей в которой равно заданному числу.

Программа

CLS

INPUT "введи размер матрицы " ; n,m

DIM A(n + 1, m)

PRINT "введи матрицу"

FOR i = 1 TO n

FOR j = 1 TO m

'Ввод элементов матрицы

INPUT A(i,j)

NEXT j, i

FOR i = 1 TO n

'Задание начального значения счетчика нулей в каждой строке матрицы

L = 0

FOR j = 1 TO m

'Определение количества нулей в каждой строке матрицы

IF A(i,j) = 0 THEN L = L + 1

NEXT j

'Определение номера строки, где все элементы равны нулю

IF L = S THEN K = i : EXIT FOR

NEXT i

'Сдвиг всех строк на одну позицию вниз, начиная со строки, где все элементы равны нулю

FOR i = n TO K + 1 STEP –1

FOR j = 1 TO m

A(i+1, j) = A(i, j)

NEXT j, i

'Вставка нулей после строки, где все элементы нулевые

FOR j = 1 TO m

A(K + 1, j) = 0

NEXT j

n = n + 1

FOR i = 1 TO n

FOR j = 1 TO m

PRINT A(i,j);

NEXT j

PRINT

NEXT i

END