Задача №1 на двумерные массивы:
Расположить элементы данного массива в обратном порядке (первый элемент меняется с последним, второй - с предпоследним и т.д. до середины; если массив содержит нечетное количество элементов, то средний остается без изменения).
Задача №2 на одномерные массивы:
Каждое из N предприятий(N задано) выпускает 5 видов товаров (одинаковых для всех предприятий).Известны названия предприятий и товаров ,стоимость единицы и общий объем выпуска товаров каждого вида на каждом предприятии.Для каждого предприятия определить вид произведенного товара с максимальной общей стоимостью.
Помогите пожалуйста люди добрые!!!
Алгоритм на первую задачу есть тока я в нем ничего не понимаю(((:
Sub поменять(ByRef массив, ByVal первое, ByVal второе)
временное = массив(первое)
массив(первое) = массив(второе)
массив(второе) = временное
End Sub
Sub тест()
Dim исх_массив(9) 'объявляем массив
'просто заполняем числами попорядку
For счетчик = 0 To 9
исх_массив(счетчик) = счетчик
Next счетчик
For счетчик = 0 To UBound(исх_массив) \ 2
Call поменять(исх_массив, счетчик, UBound(исх_массив) -счетчик)
Next счетчик
End Sub
Эм... Разжую как смогу. Если чо, считаю процедура=функция=подпрограмма
Первые пять строк - это объявление подпрограммы(функции) с именем "поменять" и тремя аргументами (массив, первое, второе). После такого объявления ее можно будет просто вызывать из др. подпрограмм (как в строке 14).
Аргумент "массив" объявлен как ByRef - это значит, что в функцию "поменять" при ее вызове передается не сам массив, а ссылка на него. И если внутри функции обращаться к этой ссылке, то обращение на самом деле будет происходить к тому, что ты подставил вместо аргумента "массив".
Вторые два аргумента объявлены как ByVal - здесь все проще - тупо передаются значения переменных. Что значит передаются? Более простой пример:
sub sum(ByRef c, ByVl a, ByVal b)
c = a + b
end sub
sub main()
call sum (i,2,3)
print i
end sub
Функция Sum принимает три аргумента - ссылку на переменную, в которую нужно записать результат и два значения, которые нужно сложить. В результате вызова этой подпрограммы в процедуре main переменная i станет равна 5, так как в "Sum" написано "c = a + b". Вместо "с" подставляется то, что указано при вызове подпрограммы, тобишь i. Вместо a - 2, а вместо b - 3.
sub sum(ByRef c, ByVl a, ByVal b)
call sum (i,2,3)
Call - это тупо вызов подпрограммы, а Sub - объявление. Конец подпрограммы обозначаетя строкой End Sub.
Вернемся к нашим баранам.
Строка 7 объявляет подпрограмму тест(), которая является главной и вызывается при запуске программы.
Строка 8 объявляет массив из 10 элементов (с 0 по 9)
Строки 10, 11, 12 - это заполнение массива числами от 0 до 9 (соответствуют номерам элементов массива).
Строка 13
В Basic встроена подпрограмма UBound, которая принимает единственный аргумент - массив, а возвращает его верхнюю границу (в нашем случае - 9). Оператор "\" это деление нацело ("/" - обычное деление).
9 / 2 = 4,5
9 \ 2 = 4
Т.е. эту строку можно записать как
For счетчик = 0 To 4
В программе используется Ubound затем, что если массив объявить не из 10 элементов, из, скажем 20, не пришлось править вручную куски программы.
То есть внутри цикла (единственная 14 строчка) вместо "счетчик" будут последовательно подставлены числа 0,1,2,3 и 4.
Call поменять(исх_массив, 0, 9)
Call поменять(исх_массив, 1, 8)
Call поменять(исх_массив, 2, 7)
Call поменять(исх_массив, 3, 6)
Call поменять(исх_массив, 4, 5)
Каждая строка вызывает процедуру "поменять", и передает ей ссылку на массив, с которым мы работаем "исх_массив". Процедура "поменять" меняет местами значения двух элементов массива с указанными номерами ( 0, 9), 1, 8)). То есть получается, что сначала меняются местами два крайних элемента массива, затем второй с начала и второй с конца, затем третий с начала и третий с конца и т. д. В результате массив просто перевернется.