Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 22:02   #1
Romahah
Новичок
Джуниор
 
Регистрация: 22.11.2011
Сообщений: 3
По умолчанию Цикл For-Next заменить на For-Each-Next

Помогите, пожалуйста.

For i = 1 To kk
G(i) = M(i) * C(i) / S1 * 100
Mn(i) = Mneft * G(i) / 100
N(i) = Mn(i) / M(i)
Next i

как реализовать циклом for-each?
Romahah вне форума Ответить с цитированием
Старый 22.11.2011, 22:31   #2
Romahah
Новичок
Джуниор
 
Регистрация: 22.11.2011
Сообщений: 3
По умолчанию

хотя бы натолкните я студент, неайтишник , делаю лабу.
Romahah вне форума Ответить с цитированием
Старый 22.11.2011, 22:35   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
как реализовать циклом for-each?
Управляющие структуры ... Циклы
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 22.11.2011, 22:35   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

For Each...Next (оператор) - повторяет одну и ту же последовательность команд для каждого элемента
массива или коллекции

не получиться у вас,можно получить только один элемент массива

Три одновременно из разных массивов с одним индексом нет.
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 22.11.2011, 22:38   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не знаю даже, чем вам помочь...
В вашем коде такую замену не произвести...

В общем случае делается это так:

меняется цикл

Код:
for i = 1 to kk
G(i)=5
next i
на цикл

Код:
for each v in G
v = 5
next v
Но в вашем случае это неприменимо
EducatedFool вне форума Ответить с цитированием
Старый 22.11.2011, 22:38   #6
Romahah
Новичок
Джуниор
 
Регистрация: 22.11.2011
Сообщений: 3
По умолчанию

а если поочередно каждый массив?
Romahah вне форума Ответить с цитированием
Старый 23.11.2011, 06:46   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

For Each только считывает элементы массива в переменную, но не меняет массив. То есть переменной массива в цикле можно присвоить новое значение, элемент массива при этом не поменяется.
Однако, если массив состоит из объектов (на самом деле - из ссылок на объекты), переменная цикла получает ссылку на объект, и можно менять свойства объекта. Сам массив при этом не меняется.
См. пример с модулем класса (шаблоном объекта).
Вложения
Тип файла: rar ForEach.rar (7.5 Кб, 13 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.11.2011, 10:00   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Оказывается, массив переменной длины тоже можно объявить как "As New". При этом явное создание экземпляра класса не нужно, он будет создан при первом обращении:
Код:
Dim MyArr() As New Roma '...
'...
'инициализация массива и занесение начальных значений
For i = 1 To kk
'    Set MyArr(i) = New Roma 'явное создание экземпляра класса
    MyArr(i).M = i
    MyArr(i).C = i * 10
Next
Правда, будет работать немного медленнее, чем при явном создании экземпляра класса, потому что при каждом обращении к объекту будет проверка, существует ли он. Об этом у Пирсона написано, я проверял - это действительно так.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в массиве все максимальные элементы заменить первым элементом, а все минимальные элементы заменить последним элементом Валерия2701 Паскаль, Turbo Pascal, PascalABC.NET 1 12.10.2011 15:49
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34