Намекните с двухмерным масивом

Ниже пример последовательного заполнения, вопрос в том как заполнить массив через одну или через две DATA....(каждую вторую или третью)
       DIM mt(300, 20)
        FOR f = 1 TO 300 
        FOR g = 1 TO 20   
        READ mt(f, g)
        PRINT mt(f, g);
        NEXT g
        PRINT
        NEXT f
 
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 1,7,8,10,12,19,27,29,36,38,39,41,42,49,50,65,75,77,79,80
DATA 18,21,26,28,29,36,38,42,43,47,51,52,53,54,55,60,62,65,68,71
DATA 12,16,18,26,28,29,31,48,51,52,54,55,57,58,63,64,65,66,72,78
DATA 7,8,14,16,18,19,22,27,34,42,43,47,48,54,56,60,68,72,73,78
DATA 3,4,10,18,19,22,27,34,38,39,42,45,50,51,55,65,67,71,75,80
DATA 2,3,9,13,16,19,20,23,28,30,33,36,37,54,55,56,61,70,72,74
DATA 3,8,14,21,32,34,36,40,45,46,47,53,54,55,57,60,67,68,69,78
DATA 4,16,20,23,27,35,44,49,52,53,54,55,58,59,64,73,77,78,79,80
DATA 1,9,10,22,26,34,42,48,53,56,57,60,61,63,65,68,70,72,75,79
DATA 8,10,11,12,23,24,26,34,35,37,38,45,48,52,56,61,62,67,77,79
DATA 4,6,7,10,13,14,16,17,19,22,31,36,39,40,49,55,56,60,64,69
DATA 2,11,13,14,18,20,21,25,30,34,42,44,52,60,61,66,71,76,77,80
DATA 5,9,12,16,28,29,32,34,36,38,46,48,54,57,60,63,64,66,72,79
DATA 3,8,10,19,23,28,32,34,35,37,50,51,52,53,54,58,62,64,65,72
DATA 1,9,10,18,24,26,30,33,34,35,37,46,49,55,65,67,72,73,77,78
DATA 3,5,6,8,9,19,28,29,33,43,44,53,54,55,58,59,64,69,71,75
и так далее.....
6 ответов

Если я правильно понял, то думаю поможет это:
For f = 1 To 300 Step 2
For g = 1 To 20 Step 2
В ходе выполнения цикла f и g будут увеличиваться на 2 а не на 1.


Если я правильно понял, то думаю поможет это:
For f = 1 To 300 Step 2
For g = 1 To 20 Step 2
В ходе выполнения цикла f и g будут увеличиваться на 2 а не на 1.
спасибо, это конечно верно если надо чтобы массив заполнялся через строчку или две, а мне надо чтобы массив заполнялся нормально (то есть последовательно без степа) но ДАТУ читал через один или два... либо дату читал как обычно но в массив загонял только через один или два пропуска...


Использовать оператор READ c какой-нибудь вспомогательной переменной в теле цикла, пример чтения DATA массивом через одну строчку:
DIM mt(300, 20)
FOR f = 1 TO 300 
  FOR i=1 TO 20
   READ a
  NEXT i
  FOR g = 1 TO 20   
   READ mt(f, g)
   PRINT mt(f, g);
  NEXT g
   PRINT
NEXT f
Если через 2 строчки, то поменять
FOR i=1 TO 20
на
FOR i=2 TO 20


Насколько я знаю есть оператор RESTORE [метка], возобновляет чтение данных с требуемой метки. А с индексами массивов можете мудрить как угодно, однако замечу если программист забивает что-либо в DATA, значит он явно ЗНАЕТ порядок и ГРАМОТНО забивает инфу, чтобы считать одним махом без лишних манипуляций.Оператор CLEAR очищающий всё и вся(что именно читайте в help), также позволяет возобновить чтение оператором DATA, это так к сведению.Lyohich84, холостое чтоние вещь занятная, однако в вашем коде не прочтётся самая первая строчка, плюс если вы переставите цикл холостого чтения ниже цикла чтения, велика вероятность словить ошибку(ведь запланированные данные будут меньше), решается установкой "пустого" обработчика ошибок перед циклами и его снятием после циклов.Вот это кстати неверно:
FOR i=2 TO 20
надо от 1 до 40 тогда уж, если хотите пропустить 40 значений(или 2 строки DATA)


>Quiet Snow<, да вы правы, для двух строчек в моём коде надо использовать цикл от 1-го до 40. А для того чтобы была прочитана первая строка, надо поменять местами тела циклов с переменными i и g. Просто там написано каждую вторую или третью, это наверно значит,что первую не надо.


это наверно значит,что первую не надо.
Раз автор спросил как читать через строку, видимо он хочет перемешать данные, например чтобы не пользоваться оператором RESTORE, а численно задавать номер отдельной части данных. Шаг для меня не совсем понятный, поскольку много данных в DATA не забьёшь. С моей точки зрения операнд DATA логично юзать для каких нибудь небольших таблиц и текста, ну или того что не хочется пихать в отдельный файл(если мало весит).