Poner int main y poner main es exactamente lo mismo, si no se pone el tipo, C lo considera un int. Sí tiene que devolver un valor, que en este caso es el numero de fallo de sistema. Si indica void main, no necesita devolver nada.
No, no es exactamente lo mismo. Con anterioridad lo era, pero en la actualidad debe estar declarado el tipo de retorno de main en forma explicita ya sea en C o en C++.
En cuanto a la duda principal, hay muchos errores en ese código, así que antes de implementar las ideas que te han dado, deberías tratar de resolver los errores en tu propio código, para luego implementar el algoritmo que hayas elegido correctamente.
He borrado los mensajes que no vienen al caso. Las discusiones en mal tono pueden tenerlas por PM, y para los mensajes tipo chat pueden usar el IRC. Saludos!