It *shouldn't* make a difference, but you might want to change the variable name in your for loop to something other than a global:
for(int i=0; i<=2; i++)
digitalWrite(arr[i], LOW);
Also, are you sure it's resetting? What happens if it's just changing i or c to a value you don't expect? You might want to test i>=9 instead of i==9, etc.
You might put a Serial.println() at the top of the loop and the bottom of the setup() just so you can tell what's happening.
If all the code checks out, then think about the power being consumed - most LEDs aren't a problem, but if you're driving enough of them you might be taking the Arduino below what it needs to stay alive. (You could test this by disconnecting your LEDs and putting serial port debugging statements in.)