le c++ pour les nul
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
le c++ pour les nul

forum d'entraide pour les débutant en c++
 
AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 apel a toutes les bonnes volontées

Aller en bas 
2 participants
AuteurMessage
cosmonul
Admin
cosmonul


Nombre de messages : 54
Date d'inscription : 22/11/2005

apel a toutes les bonnes volontées Empty
MessageSujet: apel a toutes les bonnes volontées   apel a toutes les bonnes volontées EmptyMer 23 Nov à 14:45

helli hello je cherche a faire un convertiseur décimal/binaire qui sera étoffer par la suite par d'autre base ( 8 et hexa)
je pensais a une boucle qui divise le nombre décimal jusqua 0 ou 1, cela pour obtenir la suite de 0 et de 1 qui formeront le nombre en binaire. Ces 0 et 1 sont alors stockés dans un tableau qui les restituras plus tard dans le bonne ordre.
voila l'idée de base j'attend vos sugestions Wink


je vais tenter de vous fournir une base de mon travail dés que sa ressemblera a quelque chose.
Revenir en haut Aller en bas
https://debutantcpp.1fr1.net
guiguilecho
Admin
guiguilecho


Nombre de messages : 21
Date d'inscription : 14/12/2005

apel a toutes les bonnes volontées Empty
MessageSujet: Re: apel a toutes les bonnes volontées   apel a toutes les bonnes volontées EmptyLun 17 Avr à 9:03

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 == Cool
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();
}
Revenir en haut Aller en bas
guiguilecho
Admin
guiguilecho


Nombre de messages : 21
Date d'inscription : 14/12/2005

apel a toutes les bonnes volontées Empty
MessageSujet: Re: apel a toutes les bonnes volontées   apel a toutes les bonnes volontées EmptyLun 17 Avr à 9:06

Pour le convertisseur en bases différentes c sa je crois :


#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;

const long int MAX = 100;
typedef long int Vecteur[MAX];

long int StringToInteger(char Char)
{
long int Temoin;
if (Char == '0')
Temoin = 0;
else if (Char == '1')
Temoin = 1;
else if (Char == '2')
Temoin = 2;
else if (Char == '3')
Temoin = 3;
else if (Char == '4')
Temoin = 4;
else if (Char == '5')
Temoin = 5;
else if (Char == '6')
Temoin = 6;
else if (Char == '7')
Temoin = 7;
else if (Char == '8')
Temoin = 8;
else if (Char == '9')
Temoin = 9;
return Temoin;
}

long int Length(char V[100])
{
long int i;
for (i=0; V[i]!=0; ++i)
;
return i;
}

long int Exposant(long int Base, long int Exp)
{
long int Temoin = 1;
for (long int i = 1; i <= Exp; ++i)
Temoin *= Base;
return Temoin;
}

void Afficher(Vecteur Nombre, long int Taille)
{
for (long int i=0; i<Taille; ++i)
if (Nombre[i] > 9)
cout << "[" << Nombre[i] << "]";
else
cout << Nombre[i];
}

void BaseXTo10(Vecteur Nombre, long int Base, long int &Reponse, long int Taille)
{
Reponse=0;
for (long int i=0; i<Taille; ++i)
Reponse += (Nombre[Taille-i-1] * Exposant(Base, i));
}

void Base10ToX(long int Nombre, long int Base, Vecteur Reponse, long int &Taille)
{
if (Nombre == 0)
Reponse[0]=0;
else
{
Taille = (int)(log(Nombre)/log(Base)+1e-10)+1;
for (long int i=0; i<Taille; ++i)
{
Reponse[Taille-i-1] = Nombre % Base;
Nombre = Nombre / Base;
}
}
}

int main()
{
char NombreTXT[100];
Vecteur Nombre, Reponse;
long int Save, Base1, Base2, Taille1, Taille2, TailleS1;
do
{
cout << "Quelle est la base utilisee? ";
cin >> Base1;
}
while (Base1 < 2);

Debut:
cout << "Entrez maintenant votre nombre:" << endl;
cin >> NombreTXT;
Taille1 = Length(NombreTXT);
TailleS1= Taille1;

int i, k;

for ((k=0, i=0); k<TailleS1; (++k, ++i))
if (NombreTXT[k] == '[')
{
int p,f,h;
for (p=-1; NombreTXT[k] != ']' && k<TailleS1; (++p, ++k))
{
if (NombreTXT[k] == '[' && p!=-1)
{
cout << "NOMBRE ERRONE!" << endl;
goto Debut;
}
}
if ((NombreTXT[k] != ']' && k==TailleS1) || Nombre[k] == '[')
{
cout << "NOMBRE ERRONE!" << endl;
goto Debut;
}
Taille1 -= (p+1);
Nombre[i] = 0;
for ((f=k-1,h=0); f>=k-p; (--f,++h))
Nombre[i] += StringToInteger(NombreTXT[f]) * Exposant(10,h);
if (Nombre[i] >= Base1 || Nombre[i]<0)
{
cout << "NOMBRE REFUSE!" << endl;
goto Debut;
}
}
else if (NombreTXT[k] == ']')
{
cout << "NOMBRE ERRONE!" << endl;
goto Debut;
}
else
{
Nombre[i] = StringToInteger(NombreTXT[k]);
if (Nombre[i] >= Base1 || Nombre[i]<0)
{
cout << "NOMBRE REFUSE!" << endl;
goto Debut;
}
}

do
{
cout << "Convertir ce nombre en quelle base? ";
cin >> Base2;
}
while (Base2 < 2);

BaseXTo10(Nombre, Base1, Save, Taille1);
Base10ToX(Save, Base2, Reponse, Taille2);

cout << endl;
cout << "REPONSE:" << endl;
cout << "Nombre en base " << Base1 << ": "; Afficher(Nombre, Taille1); cout << endl;
cout << "Traduction en base 10: " << Save << endl;
cout << "Nombre converti en base " << Base2 << ": "; Afficher(Reponse, Taille2); cout << endl;
getch();
}
Revenir en haut Aller en bas
cosmonul
Admin
cosmonul


Nombre de messages : 54
Date d'inscription : 22/11/2005

apel a toutes les bonnes volontées Empty
MessageSujet: Re: apel a toutes les bonnes volontées   apel a toutes les bonnes volontées EmptyMar 18 Avr à 7:29

yup merci bcp Very Happy
Revenir en haut Aller en bas
https://debutantcpp.1fr1.net
Contenu sponsorisé





apel a toutes les bonnes volontées Empty
MessageSujet: Re: apel a toutes les bonnes volontées   apel a toutes les bonnes volontées Empty

Revenir en haut Aller en bas
 
apel a toutes les bonnes volontées
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
le c++ pour les nul :: programmations :: projet-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser