Bonjour, voilà mon programme qui me permet d'additionner deux nombres écrits sous forme binaire
comment pourrais-je faire pour que j'introduise les deux nombres (premier nombre binaire et second nombre binaire) sur la ligne de commande et non plus ds le programme même?
ex : (si le programme s'appelle addition.exe)
je tappe : addtion.exe 110 100
et il apparait :
le premier nombre binaire est : 110
le second nombre binaire est : 100
leur somme binaire est : 1010
Au revoir
Code :
#include <stdio.h>
#include <string.h>
int main ()
{
size_t length;
char tab1[80],tab2[80];
int d,e,tab3[80],tab4[80];
int i,a=0,b=0;
printf("\nPremier nombre binaire\n" );
gets(tab1);
length = strlen(tab1);
d=length;
printf("\nSecond nombre binaire\n" );
gets(tab2);
length = strlen(tab2);
e=length;
if (d>=e) {
for (i=d-1; i>=d-e; i--) {tab4[i]=tab2[i-(d-e)]-48;};
for (i=d-e-1; i>=0; i--) {tab4[i]=0;};
for (i=d-1; i>=0; i--) {tab3[i]=tab4[i]+tab1[i]-48+a;
if (tab3[i]==0) {tab3[i]=0;a=0;};
if (tab3[i]==1) {tab3[i]=1;a=0;};
if (tab3[i]==2) {tab3[i]=0;a=1;};
if (tab3[i]==3) {tab3[i]=1;a=1;};
};
printf("\nLa somme des 2 nombres est :\n" );
if (a==1) {printf("1" );};
for(i=0; i<=d-1; i++) printf("%d", tab3[i]);
};
if (d<e) {
for (i=e-1; i>=e-d; i--) {tab4[i]=tab1[i-(e-d)]-48;};
for (i=e-d-1; i>=0; i--) {tab4[i]=0;};
for (i=e-1; i>=0; i--) {tab3[i]=tab4[i]+tab2[i]-48+b;
argv contient le nombre d'arguments reçus (ça ferait donc 2 dans ton cas)
et *argc[] est un tableau de chaînes contenant les arguments. Si ma mémoire est bonne, argc[0] contient la commande elle même, et sur l'index 1, tu trouveras ton premier argument (sous forme de chaîne) et ainsi de suite.
edit: si ma mémoire est bonne, le standard C requiert un "void main()" et non plus un "int main".
Message édité par drasche le 03-03-2004 à 17:51:56
oui sauf qu'il est mieux de ne pas inverser les noms des arguments du main (argc pour arg count, et argv pour arg value)
Code :
int main(int argc, char **argv)
et argc doit être égal à 3, puisque ta mémoire est bonne et qu'avec 0 arguments passés au programme, on a quand même un argument qui est le nom du programme.
Dans le programme d'origine il va aussi manquer des tests d'erreurs sur les chaînes pour vérifier que les caractères sont bien des chiffres.
Aussi, c'est pas très beau de mettre directement le code ascii du caractère 0. En le remplaçant par '0', ça marche aussi bien et c'est un poil plus lisible.
ok mais qd j'ai mes deux chaines argc[1] et argc[2]
comment puis-je faire pour remettre chaque caractère de la chaine ds mes deux tableaux (tab1 et tab2)?
ok mais qd j'ai mes deux chaines argc[1] et argc[2]
comment puis-je faire pour remettre chaque caractère de la chaine ds mes deux tableaux (tab1 et tab2)?