Answered by:
Arrays?
Question

Answers

An array is an indexed list of variables.
In index is something that identifies one entry in the list, it is often just a number.
For example if we have 3 peoples names they could be:
name1 = "John"
name2 = "Mary"
name3 = "Fred"Or we could put them in an array, the syntax is that the index is inside square brackets:
name[1] = "John"
name[2] = "Mary"
name[3] = "Fred"The indexes are 1, 2 and 3 and the corresponding values are "John", "Mary" and "Fred".
The advantage of this is that we can the do something on all the elements of the array inside a For loop:
name[1] = "John"
name[2] = "Mary"
name[3] = "Fred"
For i = 1 To Array.GetItemCount(name)
TextWindow.WriteLine(name[i])
EndForFor 3 names this is not a big deal, but we may have 50 sprites in a game and we can move them all inside a loop or perhaps we are plotting a graph of a function and need to store lots of values of X or Y.
For i = 1 To 100
x[i] = i/100*GraphicsWindow.Width
y[i] = 100+50*Math.Sin(x[i]/20)
If (i > 1) Then
GraphicsWindow.DrawLine(x[i1],y[i1],x[i],y[i])
EndIf
EndForHere is a sample program from a while back looking at arrays, import FCL390. Feel free to ask on anything not clear.
 Marked as answer by litdevModerator Friday, June 10, 2011 7:40 PM
All replies

An array is an indexed list of variables.
In index is something that identifies one entry in the list, it is often just a number.
For example if we have 3 peoples names they could be:
name1 = "John"
name2 = "Mary"
name3 = "Fred"Or we could put them in an array, the syntax is that the index is inside square brackets:
name[1] = "John"
name[2] = "Mary"
name[3] = "Fred"The indexes are 1, 2 and 3 and the corresponding values are "John", "Mary" and "Fred".
The advantage of this is that we can the do something on all the elements of the array inside a For loop:
name[1] = "John"
name[2] = "Mary"
name[3] = "Fred"
For i = 1 To Array.GetItemCount(name)
TextWindow.WriteLine(name[i])
EndForFor 3 names this is not a big deal, but we may have 50 sprites in a game and we can move them all inside a loop or perhaps we are plotting a graph of a function and need to store lots of values of X or Y.
For i = 1 To 100
x[i] = i/100*GraphicsWindow.Width
y[i] = 100+50*Math.Sin(x[i]/20)
If (i > 1) Then
GraphicsWindow.DrawLine(x[i1],y[i1],x[i],y[i])
EndIf
EndForHere is a sample program from a while back looking at arrays, import FCL390. Feel free to ask on anything not clear.
 Marked as answer by litdevModerator Friday, June 10, 2011 7:40 PM

Im sort of forumulating a project in my head which made me think of a few questions. Instead of asking a question ill just give you an example because i can't really explain it
So i have 50 arrays lets say each one is:
Number[1]
Number[2]
Etc... Ya ya ya you get the point (PS: any way to do that quicker than writing out each one?)
So can I have different terms to eliminate numbers... For ex.
If the number is an even number (divide by 2 and check remainder) eliminate it
So now i would have a list of only odd numbers so my arrays would be
Number[1]
Number[3]
Etc..
So I guess my question is can i set terms and if that part of the array does not fit the terms eliminate it
Pardon my misspellings  I am twelve :D

Yes, you can  from your question I am not sure that you follow what an index and value are  any array is like a table with 2 columns of indexes and values, for example:
array[1] = 30
array[2] = 40
array[3] = 50
This is like a table with 2 columns, index and value
index value
1 30
2 40
3 50
We can then get the value of index 2 as 40: array[2]  this is equal to 40, so TextWindow.WriteLine(array[2]) will print 40
So to your question:
We have an array of 50 random values, they are indexed from 1 to 50. If the values are not a function of the index (i) in some way or random as below then it may not be possible to create the array in a loop. For example we cannot use a loop to initialise an array of names  we can initialise an array by reading from a file though if the values are there.
For i = 1 To 50
Number[i] = Math.GetRandomNumber(100)
EndForSo having created the array, we can print the even, odd or any other test on the number inside a loop:
For i = 1 To 50
Number[i] = Math.GetRandomNumber(100)
EndFor
sumEven = 0
sumOdd = 0
For i = 1 To 50
If (Math.Remainder(Number[i],2) = 0) Then
TextWindow.WriteLine(Number[i]+" is even")
sumEven = sumEven+Number[i]
Else
TextWindow.WriteLine(Number[i]+" is odd")
sumOdd = sumOdd+Number[i]
EndIf
EndFor
TextWindow.WriteLine("The sum of even numbers is "+sumEven)
TextWindow.WriteLine("The sum of odd numbers is "+sumOdd)To delete elements (index and value) from an array can be done by setting the array index = "", such as Number[i] = ""
There are complications about deleting elements from an array in that the indexes are not changed for the nondeleted elements so looping over the indexes of the remaining array is more complex (it can be done, but is more complicated). While starting out playing with arrays I would leave deleting elements till you are sure about creating and using arrays.
Good luck and post with any questions.

I wrote out this thing but still diddnt get the result i wanted for deleted the array. What i want is in the very end of this program is that there is no longer an array number 1,3,5,7,9 etc (odd numbers)
But heres the program
For i = 1 To 50 Number[i] = i EndFor For a = 1 To 50 If Math.Remainder(Number[a],2) = 0 Then TextWindow.WriteLine(Number[a]) Else Number[a] = "" EndIf EndFor Program.Delay(1000) For j = 1 To 50 TextWindow.WriteLine(Number[j]) EndFor

As suggested this is not so straight forward  here is how it can be done though. It means creating a new array with just he remaining values indexed sequentially, then here I copied the new array to the original and deleted the new temporary array (moved it).
For i = 1 To 50
Number[i] = i
EndFor
For a = 1 To 50
If Math.Remainder(Number[a],2) = 0 Then
TextWindow.WriteLine(Number[a])
Else
Number[a] = ""
EndIf
EndFor
'Remove unset idexes  create in a new array
index = Array.GetAllIndices(Number) 'array containing remaining valid indexes in Number
For i = 1 To Array.GetItemCount(index) 'Loop over these remaining indexes creating a new sequentially indexed array
NumberNew[i] = Number[index[i]]
EndFor
'Copy new array to Number
Number = NumberNew
'Delete temporay array
NumberNew = ""
Program.Delay(1000)
For j = 1 To Array.GetItemCount(Number)
TextWindow.WriteLine(Number[j])
EndForOr we could just print the remaining valid indexes in Number without updating it:
For i = 1 To 50
Number[i] = i
EndFor
For a = 1 To 50
If Math.Remainder(Number[a],2) = 0 Then
TextWindow.WriteLine(Number[a])
Else
Number[a] = ""
EndIf
EndFor
Program.Delay(1000)
index = Array.GetAllIndices(Number) 'Array of remaining set indices in Number
For j = 1 To Array.GetItemCount(index)
TextWindow.WriteLine(Number[index[j]])
EndFor 

If you are not trying to learn how to take out data from an array, and only worried about getting the output you want, see if this works for you:
For
i = 1 To 50
Number[i] = i
EndForFor
a = 1 To 50
If Math.Remainder(Number[a],2) = 0 Then
TextWindow.WriteLine(Number[a])
Else
Number[a] = ""
EndIf
EndForProgram
.Delay(1000)
For j = 1 To 50
If Number[j] <> "" Then
TextWindow.Write(Number[j])
TextWindow.Write(", ")
EndIf
EndForTextWindow
.WriteLine("") 'This is so the "Press any key..." outputs on it's own lineIf you would prefer to take out the data, then... well, do what litdev says. Well, now I notice that he even has a different way to do what I coded above  "just print the remaining valid indexes in Number without updating it".