Por los dos minutos que le dedique a tu codigo (no es depectivo, es solo que no tuve tiempo de analizarlo bien porque estoy en el trabajo) no inicializas la variable "factura ". Vos haces:
for (i=factura;.......;........)
pero antes, al principio de tu funcion escribis:
int factura;
pero factura puede llegar a tener cualquier basura si no la inicializas.
Espero que haya sido eso
Salu2!!!!!!