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 15: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 15:54

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

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

Igor 20.05.2009 16:26

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

Gvozd 20.05.2009 16:38

Цитата:

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

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

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

Igor 20.05.2009 17:00

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

Riim 20.05.2009 17:01

Цитата:

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

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

Igor 21.05.2009 12: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 15:52

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

Kolyaj 21.05.2009 15:55

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

x-yuri 21.05.2009 15:59

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


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