Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Задача 18. Занести отрицательные элементы массива A ( NxM ) в массив B и напечатать его.

2024-02-15 72
Задача 18. Занести отрицательные элементы массива A ( NxM ) в массив B и напечатать его. 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

 Решение. Алгоритм задачи состоит из трех частей: ввести матрицу A; проверить каждый ее элемент: если он отрицательный, поместить его в массив B; вывести полученный массив B на печать. Первая и третья части – ввод и вывод данных решаются стандартным способом ввода и вывода массивов. Вторая  часть – основа решения, рассмотрим ее подробнее. Анализ элементов A(i,j) матрицы A можно провести, как обычно для матриц, с помощью вложенных циклов For, перечисляющих все строки (i) и столбцы (j) матрицы. Если A(i,j) – отрицательный, нужно присвоить очередному элементу массива B это значение. Здесь проблема (и источник ошибок) в том, как определить очередной элемент массива B. Поскольку заранее количество отрицательных элементов в A неизвестно, то заранее неизвестна и точная длина массива B. Очевидно только, что она не превысит NxM – количества элементов исходной матрицы A. Ясно так- же, что счетчик элементов массива B никак не зависит от очередных i и j. Отсюда следует главный вывод для решения задач такого типа: для массива- приемника необходимо завести свой, независимый счетчик элементов. Отведем для него отдельную переменную. Пусть это будет k. При записи отрицательно- го A(i,j) в B(k) счетчик k будет увеличиваться на единицу, и по окончании всей работы значение k покажет истинную длину массива B. Для примера в программе взята исходная матрица A размером N=4, M=6. Вся программа имеет вид:

 

Sub Перенос()

Dim A(4, 6) As Integer, B(24) As Integer, k As Integer

For i = 1 To 4

    For j = 1 To 6  

          A(i,j)=InputBox("Введите значение элемента матрицы ")  

          Cells(i,j)= A(i,j) ‘вывод вводимой матрицы на лист Excel для наглядности  

   Next

Next

k = 0      ‘обнуление счетчика элементов массива В перед началом его заполнения

For i = 1 To

  For j = 1 To 6    

        If A(i, j) < 0 Then    

          k = k + 1     

          B(k) = A(i, j)    

        End If

  Next

Next

For i = 1 To k

Cells(7, i) = B(i)  ‘вывод массива В на лист Excel в строку 7

Next

End Sub

 

Эту программу можно написать короче, совместив анализ с вводом и выводом и сократив, соответственно, количество внешних циклов с трех до одного:

 

Sub Перенос()

Dim A(4, 6) As Integer, B(24) As Integer, k As Integer

k = 0                       

For i = 1 To 4

  For j = 1 To 6  

       A(i,j)=InputBox("Введите значение элемента матрицы")  

      Cells(i, j) = A(i, j)               

      If A(i, j) < 0 Then      

            k = k + 1      

            B(k) = A(i, j)      

            Cells(7, k) = B(k)            

      End If

  Next

Next

End Sub

 

Задача 19. Посчитать число четных чисел в матрице А(5 x 5).

Решение. Алгоритм включает ввод матрицы, перебор ее значений с проверкой на четность, подсчет суммы четных значений и вывод результата. Для программирования задачи возьмем переменную (например, k) в качестве счетчика четных чисел. Проверку на четность реализуем с помощью функции Mod.

Вся программа:

 

Sub matrixNumber()

Dim i, j, k, A(5, 5) As Integer

For i = 1 To 5               ‘вводим матрицу из листа Excel:   

   For j = 1 To 5

        A(i, j) = Cells(i, j)   

   Next j

Next

k = 0                          ‘обнуляем счетчик четных чисел

For i = 1 To 5            ‘начинаем перебор элементов матрицы:  

For j = 1 To 5   

    If A(i,j) Mod 2 = 0 Then ‘проверяем на четность     

         k = k + 1                         ‘считаем четные значения     

    End If

Next

Next

MsgBox  (k)                    ‘печатаем результат

End Sub

 

Задача 20. Посчитать сумму элементов, стоящих на четных позициях строк и столбцов матрицы А(7 x 7).

Решение. Здесь уже не важна четность элементов, важна четность позиций: элемент А(2,4), например, нам подходит, а элемент А(3,4) уже нет. Чтобы попасть на четную позицию, излишне использовать функцию Mod для счетчиков строк i и столбцов j. Достаточно изменять шаг каждого цикла с приращением 2.

Программа: 

 

Sub matrixIndex()

Dim i, j, s, A(7, 7) As Integer

For i = 1 To 7  

For j = 1 To 7     

      A(i, j) = Cells(i, j)  

Next     

Next

s = 0                                        ‘обнуляем хранилище суммы

For i = 2 To 7 Step 2            ‘перебираем только четные строки, начиная с 2    

For j = 2 To 7 Step 2        ‘перебираем только четные столбцы, начиная с 2      

        s = s + A(i, j)      ‘элементы A(i, j) лежат на пересечении четных строк и столбцов

Next

MsgBox (s)

End Sub

 


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.014 с.