Главная страница

Введение 8 Этапы создания Windowsприложения 8


Скачать 6.98 Mb.
НазваниеВведение 8 Этапы создания Windowsприложения 8
АнкорVisual Basic 2005 (word97).doc
Дата22.12.2017
Размер6.98 Mb.
Формат файлаdoc
Имя файлаVisual Basic 2005 (word97).doc
ТипРеферат
#12532
страница28 из 63
1   ...   24   25   26   27   28   29   30   31   ...   63

7.10. Замена одного элемента массива


Для замены одного элемента массива на некоторое значение необходимо знать номер заменяемого элемента и само значение. Следовательно, данная задача будет решаться за несколько шагов. Сначала необходимо вычислить нужное значение. Затем, если при вычислении не возникли ошибки, и не было выхода за пределы области допустимых значений, надо определить номер заменяемого элемента. Обычно первые два шага алгоритма стараются объединить в одном цикле. На третьем заключительном шаге алгоритма выполняется непосредственная замена значения выбранного элемента массива. При решении этой задачи массив необходимо выводить дважды. Первый раз элементы массива печатаются непосредственно после ввода. Это исходное состояние массива. Второй раз элементы массива выводятся уже после замены элементов. Это отображается измененный (преобразованный) массив. В результате пользователь может увидеть, как изменился массив в результате работы программы.

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

Для решения задачи нам потребуются следующие переменные: max – значение максимального элемента, imax – номер максимального элемента, summa – сумма всех элементов массива.

Dim max, imax, summa As Integer

Задаем начальные значения для поиска максимального элемента и его номера.

max = a(0)

imax = 0

Задаем начальное значение для суммы. Мы собираемся объединить в одном цикле поиск максимума и вычисление суммы, но при этом возникает противоречие. Вычисляя сумму всех элементов массива, мы начинали обрабатывать массив с нулевого элемента. А поиск максимального элемента традиционно начинается с первого элемента массива. Чтобы разрешить это противоречие, мы зададим начальное значение суммы равным нулевому элементу, а обработку массива начнем с первого элемента.

summa = a(0)

Организуем цикл для обработки элементов массива.

For i = 1 To n

Добавляем очередной элемент массива к общей сумме, накапливая таким образом итоговое значение.

summa += a(i)

Анализируем текущий элемент массива.

If a(i) > max Then

Если его значение превышает значение максимума, значит, максимум надо обновить, записав в него значение этого элемента.

max = a(i)

Запоминаем новый номер максимального элемента.

imax = i

End If

Next

После завершения цикла выполняем замену. В массив на место элемента, номер которого хранится в переменной imax, то есть на место максимума, записываем значение вычисленной суммы.

a(imax) = summa

Теперь можно выводить результаты. Сначала выводим горизонтальную черту, чтобы зрительно отделить исходные данные от результатов работы программы.

lstA.Items.Add("-------------------------------")

Выводим поясняющий заголовок.

lstA.Items.Add("Измененный массив")

Затем последовательно в цикле печатаем все элементы массива. Использование константы vbTab позволяет организовать вывод в две колонки.

For i = 0 To n

lstA.Items.Add(Str(i) + vbTab + Str(a(i)))

Next

Полный текст программы представлен в приложении 29. Пример работы программы приведен на рис. 44.


Рис. 44. Пример работы программы, заменяющей максимальный элемент массива на сумму всех его элементов

7.11. Замена всех элементов массива, удовлетворяющих некоторому условию


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

Рассмотрим особенности программой реализации этого алгоритма на примере задачи замены всех элементов, равных нулю, на -1.

Начнем с объявления необходимых переменных. Так как в массиве может не быть ни одного элемента, равного нулю, то нам потребуется переменная, в которой будет храниться количество выполненных замен. Очевидно, что эта переменная будет иметь целочисленный тип данных.

Dim kol As Integer

До начала преобразования количество выполненных замен полагаем равным нулю, так как еще не было выполнено ни одной замены.

kol = 0

Организуем цикл для обработки всех элементов исходного массива.

For i = 0 To n

На каждом шаге цикла анализируем очередной элемент массива.

If a(i) = 0 Then

Если этот элемент равен нулю, значит, его необходимо заменить на -1.

a(i) = -1

Соответственно количество выполненных замен увеличивается на единицу.

kol += 1

End If

Next

После завершения цикла выводим полученные результаты в окно списка. Сначала выводим горизонтальную черту, чтобы зрительно отделить исходные данные от результатов.

lstA.Items.Add("-------------------------------")

Затем анализируем количество выполненных замен.

If kol = 0 Then

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

lstA.Items.Add("В массиве нет нулей")

Else

В противном случае, если замены были, выводим поясняющий заголовок.

lstA.Items.Add("Измененный массив")

Затем последовательно в цикле печатаем все элементы измененного массива. Использование константы vbTab позволяет организовать вывод в две колонки.

For i = 0 To n

lstA.Items.Add(Str(i) + vbTab + Str(a(i)))

Next

End If

Полный текст программы представлен в приложении 30. Примеры работы программы при различных исходных данных приведены на рис. 45.


Рис. 45. Примеры работы программы заменяющей все нулевые элементы массива на -1

1   ...   24   25   26   27   28   29   30   31   ...   63


написать администратору сайта