begin process at 2012 02 12 10:23:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

addition en binaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

addition en binaire

samedi 26 mars 2005 à 19:57:10 | addition en binaire

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);
}

samedi 26 mars 2005 à 20:42:11 | Re : addition en binaire

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.
samedi 26 mars 2005 à 21:13:22 | Re : addition en binaire

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 !!!!!


samedi 26 mars 2005 à 21:35:09 | Re : addition en binaire

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.
samedi 26 mars 2005 à 23:09:43 | Re : addition en binaire

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 ?
dimanche 27 mars 2005 à 11:36:50 | Re : addition en binaire

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
dimanche 27 mars 2005 à 15:02:20 | Re : addition en binaire

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


Cette discussion est classée dans : int, char, nb, cout, verif


Répondre à ce message

Sujets en rapport avec ce message

Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l celà n'enregistre pas [:(!],grrrr [ par oceane67 ] voilà, mon programme n'enregistre toujours pas, je ne sais pas pourquoi, surtout qu'il fait comme si c'etait le cas, je desepesere,voici mon programme Fatal signal: Segmentation Fault (SDL Parachute Deployed) [ par broks ] Je ne comprends vraiment pas pourkoa ca ne marche pas...C'est surement un probleme au niveau de la fonction saisi puisque je plante lorsque je dois sa resoudre un problème [ par ihssann ] j'ais un projet à fiare ; j'ais fais le code meis il ne veux pas executer!!!!qu'est ce que je dois faire svp??voila mon code: #include <SPAN lang=EN-G plantage inexpliqué [ par graall ] bonjour, j'ai un problème avec ce code :     getch();     FILE *pHtml;     int nb_char = 0;     bool sortie = false; Probleme avec qsort [ par Noxk ] bonjour, voila j'ai un probleme avec qsort j'esssaie de faire un tri sur un tableau de structure mais j'obtiens une erreur d'acces violation, apparemm char **argv [ par iam_myst ] bonjour je pense que c'est vraiment un problème de débutant mais la je suis perplexe :( si on a un programme pricipal de ce type :     int main(int a Pb de link avec cout et un char [ par Zakata ] Bonsoir à tous,J'ésaye de programmer une fonction qui affiche une variables de type char sur la console :void Menu::Display(void){    int Cpt;    for( pointeur dans une fonction [ par nemetos ] Bonjour,voici mon problème : ce code marche using namespace std;#include #include int lire(char *sMes,int iInf,int iSup); int main(){ int i=lire(


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,326 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales