Złe działanie programu napisanego w c++

Witam

Mam taki program:

#include 

#include 

#include 

#include 


using namespace std;


int main()

{

	ifstream plik1;

	ofstream plik2;


	int liczba;

	int a = 256;


	plik1.open("dane.txt");

	plik2.open("reprezentacja binarna.txt");


	if(plik1.good() && plik2.good())

	{

		do

		{


			plik1 >> liczba;

			cout <

			for(int i = 0; i < 9;i++)

			{


				if(liczba-a >= 0)

				{

					plik2 << "1";

					a=a/2;

					liczba=liczba-a;

				}

				else

				{

					plik2 << "0";

					a=a/2;

				}


			}

			plik2 << endl;


		}

		while(!plik1.eof());


	}

	getch();

}

ten program nie za dobrze mi działa i nie wiem co w nim poprawić, bo: Po wczytaniu z pliku np liczby 2 to w pliku reprezentacja binarna pojawia się binarnie liczba 000000011. Według mnie program powinien dobrze działać, gdyż po wczytaniu liczby 2 jest sprawdzany warunek

do

		{


			plik1 >> liczba;

			cout <

			for(int i = 0; i < 9;i++)

			{


				if(liczba-a >= 0)

				{

					plik2 << "1";

					a=a/2;

					liczba=liczba-a;

				}

				else

				{

					plik2 << "0";

					a=a/2;

				}


			}

			plik2 << endl;


		}

		while(!plik1.eof());

ByLbym wdzięczny jeżeli ktoś by mi pomógł

if(liczba-a >= 0)

            {

               plik2 << "1";

               a=a/2;

               liczba=liczba-a;

            }

Powinno być:

if(liczba-a >= 0)

            {

               plik2 << "1";

               liczba=liczba-a;

               a=a/2;

            }

a tak w ogóle to

a=a/2;

wyrzucił bym poza if-else bo jest on nie zależny od warunku

A mógłby ktoś jeszcze sprawdzić jeszcze jeden program, bo nie wiem, czy dokładnie działa, bo z silni jestem słaby :

#include

#include

#include


using namespace std;


int silnia(int liczba){

     if(liczba==1){

          return 1;

     }

     else{

          return liczba*silnia(liczba-1);

     }

}


main(){

       ifstream dane;

       ofstream silnie;

       dane.open("liczby.txt");

                             if(dane.good()){

                                  silnie.open("silnia.txt");

                                  if(silnie.good()){

                                  	int liczba;



									   do

									   {

									   	dane << liczba;

									   	silnie >> silnia(liczba);

									   }                                   

                                                   }                                          

                                       silnie.close();





       dane.close();




       getch();

       return(0);

       }

       }

       }