begin process at 2008 07 20 23:05:10
1 213 505 membres
406 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : addition en binaire [ Archives / Au secours ] (jejedi)

addition en binaire le 26/03/2005 19:57:10

jejedi
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 <iostream.h>
#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);
}


Re : addition en binaire le 26/03/2005 20:42:11

steve_clamage
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.

Re : addition en binaire le 26/03/2005 21:13:22

jejedi
oui mais non justement j' ai pas le droit de faire comme ca ( trop facile!!!) !!!
Faut que je dévellope une fonction sans utiliser les options du  cout  sinon effectivement ca faisait 3 lignes !!!!

Puis bon de la a dire que ma fonction sert a rien ...... du calme !!!!!



Re : addition en binaire le 26/03/2005 21:35:09

steve_clamage
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 <iostream>  // 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
bool addition( const string & n1, const string & n2, string & resultat );
qui retourne faux (false) si une des deux chaines n'est pas le format correcte d'une représentation binaire.

Re : addition en binaire le 26/03/2005 23:09:43

Telepathmaster
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 ?

Re : addition en binaire le 27/03/2005 11:36:50

minet03
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
CyberMan.inc The WebSite

Re : addition en binaire le 27/03/2005 15:02:20

steve_clamage
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').


Classé sous : int, char, nb, cout, verif

Participer à cet échange

Livres en rapport

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS