que tal saludos:
bueno a simple vista no se ve nada anormal (segun yo):
pero me di cuenta de esto:
y luego para finalizar el while la condiciòn que tienes es esta:
el datalle es que j=0, y x toma el valor de j, pero a x la incrementas antes de que termine el primer ciclo de j, es decir, a x la incrementas a 1 cuando j vale aùn 0, y en la condición dices que va a terminar cuando x sea menor que j. tal vez si cambias la condicion, a que termine cuando hayan pasado todos los productos, pruebala y luego nos comentas.
espero me hayas entendido y no enredado mas, es mi humilde opinion. saludos y hasta pronto