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)

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

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.