Tien ca pourais ce résmer à ca :
#include <iostream>
#include <fstream>
#include <conio.h>
#include <math.h>
using namespace std;
char IntegerToCharacter(int Nombre)
{
char Temoin;
if (Nombre == 0)
Temoin = '0';
else if (Nombre == 1)
Temoin = '1';
else if (Nombre == 2)
Temoin = '2';
else if (Nombre == 3)
Temoin = '3';
else if (Nombre == 4)
Temoin = '4';
else if (Nombre == 5)
Temoin = '5';
else if (Nombre == 6)
Temoin = '6';
else if (Nombre == 7)
Temoin = '7';
else if (Nombre ==
Temoin = '8';
else if (Nombre == 9)
Temoin = '9';
return Temoin;
}
void IntegerToString(int Nombre, char Char[10], int &Taille)
{
Taille = (int)(log(Nombre)/log(10)+1e-10)+1;
for (int i=0; i<Taille; ++i)
{
Char[Taille-i-1] = IntegerToCharacter(Nombre % 10);
Nombre /= 10;
}
}
int Length(char V[100])
{
int i;
for (i=0; V[i]!=0; ++i);
return i;
}
int main()
{
char TXT[100];
fstream f;
f.open("TexteEnLangageMachine.txt", ios::out);
cout << "Entrez le texte a convertir en langage machine:" << endl;
cin >> TXT;
cout << endl << endl;
cout << "Voici le texte traduit en langage machine (binaire):" << endl;
cout << endl;
int Nombre, Byte=0, Un=0, Zero=0;
int Len=Length(TXT);
f.write(TXT, Len);
f.write("\n", 1);
/* Parcours de la string */
for (int i=0; i<Len; ++i)
{
Nombre=TXT[i];
/* Conversion binaire */
if (Nombre == 0)
cout << 0;
else
{
int Taille = (int)(log(Nombre)/log(2)+1e-10)+1;
bool *M = new bool[Taille];
for (int i=0; i<Taille; ++i)
{
M[i] = Nombre % 2;
Nombre = Nombre / 2;
}
for (int i=Taille-1; i>=0; --i)
{
cout << M[i];
char Char[1];
if (M[i] == 0)
{
Char[0] = '0';
++Zero;
}
else if (M[i] == 1)
{
Char[0] = '1';
++Un;
}
f.write(Char, 1);
++Byte;
}
delete[] M;
}
}
cout << endl << endl << endl;
cout << "Ce texte s'etend sur " << Byte << " bytes!" << endl;
cout << "Il contient " << Zero << " zeros et " << Un << " uns" << endl;
char Save[10];
int Taille;
f.write("\n", 1);
f.write("Bytes: ", 7);
IntegerToString(Byte, Save, Taille);
f.write(Save, Taille);
f.write("\n", 1);
f.write("Zéros: ", 7);
IntegerToString(Zero, Save, Taille);
f.write(Save, Taille);
f.write("\n", 1);
f.write("Uns: ", 5);
IntegerToString(Un, Save, Taille);
f.write(Save, Taille);
getch();
}