Javascript-форум (https://javascript.ru/forum/)
-   Я не знаю javascript (https://javascript.ru/forum/ya-ne-znayu-javascript/)
-   -   Просмотр массива (https://javascript.ru/forum/ya-ne-znayu-javascript/3757-prosmotr-massiva.html)

Igor 20.05.2009 16:21

Просмотр массива
 
Суть моей задачи в следующем. Есть заранее отобранный набор акций (300-500 шт.). Есть брокерская система, которая импортирует эти данные. Эта система использует встроенный язык – EFS. Это усеченная версия JavaScript. В отдельно написанной мною программе эти акции должны быть проверенны на определенные условия и, при совпадении условий выдается список тиккеров (наименований) акций, удовлетворяющих поставленным условиям.
Программу такую я написал, но столкнулся со следующей проблемой. В EFS есть на встроенные в нее функции ограничения на индекс – он не должен быть больше 5. То есть в цикле я не могу просматривать более 6 элементов массива. Поясню на примере.
Структура (логическая) программы следующая.
function preMain() {
………
var sSymbol;
var Per;
………
sSymbol=new Array("A","ABT,………………,"APA","APD");
Per=60;
………
function main() {
………
for(var i = 0; i <= 5; i++)
{
………
MAX3Buy = (1)*(
open(0,sym(sSymbol[i],inv(Per))) <= close(0,sym(sSymbol[i],inv(Per)))
);
………
if(MAX3Buy == 1)
{{Alert.addToList(sSymbol[i],close(0,sym(sSymbol[i],inv(Per))),Color.black, Color.black);}}

……..
}
return
}
Так вот, массив sSymbol может насчитывать 300-500 элементов. В цикле, если указывается для i число более 5, выдается ошибка, что индекс функции close(0,sym(sSymbol[i],inv(Per))) (это цена закрытия выбранной акции) или тому подобные функции EFS не могут иметь индекс более 5 (т.е. 6 элементов массива, начиная с 0). Как обойти это ограничение и организовать просмотр всего массива (300-500 шт.), я не знаю. Может использовать для построения нового массива методы Array, такие как shift() или slise()? Пробовал, не получилось. Скорее всего, я неправильно прописывал эти операторы.
Не могли бы Вы мне помочь организовать в вышеуказанной структуре проверку элементов всего массива sSymbol (300-500 шт) на выполнение указанных условий при ограничении того, что индекс i в встроенных функциях EFS не должен превышать 5
Заранее благодарю,
Игорь (IgorAR@yandex.ru)

Gvozd 20.05.2009 16:54

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

Уважаемый Igor, но в таком ключе навряд ли кто-то тут сможет помочь с проблемой.
тут нету людей способных телепатически придумывать код под корявый интепретатор корявого языка, не зная всех его особенностей, и не имея возможности повозится с интепертатором.
Даже если вы прдоставите все данные в виде интепретатора, входных данных, и обрабатывающего их кода, то это в любом случае тянет на раздел "работа"
PS может быть в этом языке будет работать метод pop()
только не спрашивайте меня как с ним работать-гугл знает

Igor 20.05.2009 17:26

Уважаемый Профессор, если я Вас оскорбил своим вопросом, прошу прощения! Я первый раз на этом форуме и обратился в рубрику "Я-новичок". Я действительно чайник в программировании. А суть моей проблемы - организовать правельно цикл с использованием операторов JavaScript, который я самостоятельно не могу сделать. Поэтому обратился к Вам - Спецам.

Gvozd 20.05.2009 17:38

Цитата:

Сообщение от Igor
организовать правельно цикл с использованием операторов JavaScript

ваш цикл правильный и использует операторы JS
что делать с ваши недоязыком, не позволяющим использовать крупные массивы, я понятия не имею.
предположил что метод pop() сработает.
попробуйте его
строить дальнейшие предположения, учитывая, что я понятия не имею какие "сокровища" таятся в этом языке, просто бессмысленно. можно предположить кучу вариантов, и все они могут оказатся неправильными.
с учетом того, как работает форум, проблему в режиме "код"-"отчет о его неработоспособности", и повтор, можно решать долго и не решить.
именно поэтому я и предложил вам обратится в раздел работа, и если найдется исполнитель, выдать ему образец интепретатора вашего языка

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

Igor 20.05.2009 18:00

Уважаемый Профессор, спасибо за совет с методом pop(). Я пробывал с Shift(). Он работает. Но я не знаю, как их завязать в цикл - выдает только одно значение. Просмотрел кучу литературы - не нашел. Я, к большому сожалению, не программист.
P.S. А по поводу мыла - уважая Ваше внимание, думал в личке будет скромнее с моей стороны не беспокоить остальных своей перепиской.

Riim 20.05.2009 18:01

Цитата:

Сообщение от Gvozd
а возмутился я прежде всего, из-за того что я считаю наглостью публиковать свое мыло в ожидании, что скучающие и добрые профессионалы кинутся туда к вам решать вашу проблему.

Другими словами: ответ должен быть доступен всем.

Igor 21.05.2009 13:32

Уважаемый Профессор или кто-нибудь из уважаемых Спецов ответьте пожалуйста на вопрос!!!
В конструкции программы

function main() {
for(var i = 0; i <= 11; i++)
{
sSymbol = ["A","ABT","ABX","ACI","AFL","AGP","AIZ","AMT","AMX ","ANR","APA","APD"];

var sSymb = sSymbol.pop();

MAX3 = (1)*(open(0,sym(sSymb,inv(Per))) >= 0);

if(MAX3 == 1)
{{Alert.addToList(sSymb,close(0,sym(sSymb,inv(Per) )), Color.black, Color.black);}}

}
return
}

при использовании метода pop() выдается только один (последний - APD) символ? Почему последовательно не выдаются остальные? В чем ошибка?
Помогите мне, пожалуйста!!!

x-yuri 21.05.2009 16:52

pop удаляет последний и возвращает его, если не true, то ошибка в интерпретаторе
p.s. в данном случае скорее shift подошло бы: проход по массиву вроде изначально был от начала к концу

Kolyaj 21.05.2009 16:55

Массив на каждой итерации цикла переопределяется.

x-yuri 21.05.2009 16:59

ой, не заметил :-?

Gvozd 21.05.2009 17:03

var arr=["A","ABT","ABX","ACI","AFL","AGP","AIZ","AMT","AMX ","ANR","APA","APD"];
var arr_elem=null;
var new_arr=[];
while(arr_elem=arr.shift()){
alert(arr_elem);
new_arr.push(arr_elem);
}

после прохождения цикла arr станет пустым, а в new_arr будут содержатся его значения
надеюсь в вашем языке это сработает
PS хватит называть нас профессорами.
это всего лиш атавизм оставшийся на форуме от тех времен, когда нельзя было делать индивидуальное звание. означало лиш что много сообщений было набрано.
мне его лень менять просто, вот и висит
PPS
Цитата:

Сообщение от Kolyaj
Массив на каждой итерации цикла переопределяется.

полагаю это опечатка.в первом коде у ТС-а этого не было


Часовой пояс GMT +3, время: 05:13.