jejedi
Messages postés2Date d'inscriptionmercredi 12 mai 2004StatutMembreDernière intervention26 mars 2005
-
26 mars 2005 à 19:57
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 2006
-
27 mars 2005 à 15:02
bonsoir ,
je dois faire un petit prog qui additione 2 nombres binaire.
Le probleme c' est que mes 2 nombres étant des chaines de caractére ca me renvoit une chaine de caractére.
Ex : 1+1= b
Donc voila si qqun voit merci d' avance !!
#include
#include <string.h>
#include <stdlib.h>
int verif(char * a)
{
for (int i=0;i<strlen(a);i++)
{
if (a[i]!='0' && a[i]!='1')
return(0);
}
return(1);
}
char* addition( char * nb1, char * nb2)
{
char *nb;int taille;
nb=new char[50];
int taille1=strlen(nb1);
int taille2=strlen(nb2);
int reste=0;
int nombre;
int c1,c2;
if (taille1 >taille2)
taille=taille1;
else
taille=taille2;
for (int i=0 ; i< taille;i++)
{
c1=(int)nb1[i];;
c2=(int)nb2[i];
nombre=c1+c2+reste;
// nb[i]=nombre
if ( nombre == 2)
{
nb[i]='0';
reste=1;
}
else
{
nb[i]=(char)nombre;
}
}
return(nb);
}
int main()
{
char *a,*b,*c;
a=new char[50];
b=new char[50];
c=new char[50];
cout<< " Entrez 2 nombres binaires:" << endl;
cout << " le premier : " << endl;
cin >> a ;
cout << " le second : " << endl;
cin >> b ;
if (( verif(a) && verif(b)) == 1)
{
c=addition(a,b);
cout << a <<" +"<< b<<" = " <<c << endl ;
}
else
{
if (( verif(a) || verif(b)) ==0)
{
cout <<"Les deux nombres ne sont pas binaires";
}
else
{
if ((verif(a))==0)
{
cout << "Le premier nombre n' est pas binaire";
}
else cout << "le second nombre n' est pas binaire";
}
}
return(1);
}
A voir également:
Addition binaire
Addition binaire en ligne - Meilleures réponses
Additionneur binaire en ligne - Meilleures réponses
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 26 mars 2005 à 20:42
Tu sais que ta fonction addition(
char * nb1, char * nb2) ne sert à rien ? "addition binaire" ne veut
rien dire, tu veux juste saisir la représentation biniare (base 2) de
deux nombres, les additionner (opérateur +, tout simplement) et
afficher la repésentation binaire du résultat.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 26 mars 2005 à 21:35
Oui, si c'est le but de l'exercice, désolé.
En attendant tu devrais utiliser des string plutot que des char*, c'est
nettement plus simple (l'utilisation que tu fais des char* est
incorrecte, c'est plein de fuites mémoire)
#include // sans .h, c'est déprécié
#include <string>
using namespace std;
int main()
{
string a, b, c;
cout << " le premier : " << endl;
getline( cin, a ); // pour saisir une ligne dans a, par exemple "01010110111010"
}
Ensuite pour simplifier ta gestion d'erreur, fais une fonction addition
cs_Telepathmaster
Messages postés46Date d'inscriptionvendredi 31 octobre 2003StatutMembreDernière intervention 7 août 2008 26 mars 2005 à 23:09
Je comprends pas, tu fais ton addition à l'envers non ?
Là tu pars du chiffre de gauche et tu va jusqu'au chiffre de droite, j'imagine que tu veux faire l'inverse ????
Et ici aussi,
nombre=c1+c2+reste;
// nb[i]=nombre
if ( nombre == 2)
nombre n'est pas forcément 0, 1 ou 2, ça peut etre 3 par exemple, si il restait 1 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
minet03
Messages postés415Date d'inscriptionsamedi 4 janvier 2003StatutMembreDernière intervention 2 décembre 20053 27 mars 2005 à 11:36
Je suppose que tu veux faire l'addition binaire comme tu le ferai toi
sur une feuille. Dans ce cas, rien de plus simple. Tu prends 3 string
(ou char*, comme tu le sens). Dans la première tu met le premier
binaire, dans la deuxième tu met le deuxième binaire, et dans la
troisième, tu met le résultat de l'addition. ensuite, il te faut un int
pour le drapeau de retenu ( 1+1=10 ).
Pour commencer t'inverse les 2 binaires. ensuite tu prend caractère par caractère et tu les additionne :
0+0 = 0
0+1 = 1
1+1 = 10 (ici tu mettra 1 dans le int de la retenu pour ensuite l'additionner avec les caractère d'aprè)
P.S. : le code ASSCI de 0 est 48, et donc le code ASSCI de 1 est 49.
Le CyberMonde nous offre une meilleur qualité de vie
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 27 mars 2005 à 15:02
Il faut utiliser la constante '0', c'est portable contrairement au code
ASCII (le standard n'impose pas de jeu de caractères mais on a la
relation '0' < '1' < ... < '9').