I understand what you want now. But, do you really want to do that?
It is O.K. for small number like 1234 in the above case.
What if the number is 1234567 do you really want to bring down all the number?

In my case:
I only bring down 23 so student can figure out the next number is 4*5=20 <23
But if you bring down 234, will it be easier for student to figure out the next number is 4 ?
if you bring down 234, then you will need another number to store 23.
Because the next step is 23-20, otherwise you will have to calculate 234-200.

Please check out the original design
[img]http://www.coolmath4kids.com/long-division/images/long-division-30.gif[/img]
It is shown as 46-45 in the above picture. it is not shown as 465-450.

And for you new way of thinking tv[0]=1000 instead of tv[0]=10;

For my case:
tv[0]=10;
tv[1]=23;
tv[2]=20;
tv[3]=34;
tv[4]=30;
tv[5]=4;

For your new way of thinking:
tv[0]=1000;
tv[1]=230;
tv[2]=200;
tv[3]=34;
tv[4]=30;
tv[5]=4;

Because you only want to show tv[0] as 10, tv[2] as 20 so you will need to define another array to store 10, 20 in order to display it. (It will be easier to display 1000 for tv[0], but is it easy for student to know the first one is 200*5 instead of 2*5?

If you really want to do it that way:
What you need to change is
tv[0]*100;
tv[1]*10;
tv[2]*10;
tv[3]*1;
tv[4]*1;
tv[5]*1;

// the result is 246, you can get [b]100[/b] from 246

There are many different way to write the same program.