Bueno....no lei mucho el programa, pero si te das cuenta declaras el arreglo "a" de 3 elementos, lo cual quiere decir que sus índices van de 0 a 2 y tu estas usando a[3] en algunas partes de tu programa.
Para arreglar eso debes declarar "a" con una mayor capacidad:
Saludos