Se connecter avec
S'enregistrer | Connectez-vous

ligne de commande : help!!

Dernière réponse : dans Programmation

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



  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5.  
  6.  
  7. int main ()
  8.  
  9. {
  10. size_t length;
  11. char tab1[80],tab2[80];
  12. int d,e,tab3[80],tab4[80];
  13. int i,a=0,b=0;
  14.  
  15.  
  16. printf("\nPremier nombre binaire\n");
  17. gets(tab1);
  18. length = strlen(tab1);
  19. d=length;
  20.  
  21. printf("\nSecond nombre binaire\n");
  22. gets(tab2);
  23. length = strlen(tab2);
  24. e=length;
  25.  
  26. if (d>=e) {
  27. for (i=d-1; i>=d-e; i--) {tab4[i]=tab2[i-(d-e)]-48;};
  28. for (i=d-e-1; i>=0; i--) {tab4[i]=0;};
  29. for (i=d-1; i>=0; i--) {tab3[i]=tab4[i]+tab1[i]-48+a;
  30. if (tab3[i]==0) {tab3[i]=0;a=0;};
  31. if (tab3[i]==1) {tab3[i]=1;a=0;};
  32. if (tab3[i]==2) {tab3[i]=0;a=1;};
  33. if (tab3[i]==3) {tab3[i]=1;a=1;};
  34. };
  35. printf("\nLa somme des 2 nombres est :\n");
  36. if (a==1) {printf("1");};
  37. for(i=0; i<=d-1; i++) printf("%d", tab3[i]);
  38. };
  39.  
  40. if (d<e) {
  41. for (i=e-1; i>=e-d; i--) {tab4[i]=tab1[i-(e-d)]-48;};
  42. for (i=e-d-1; i>=0; i--) {tab4[i]=0;};
  43. for (i=e-1; i>=0; i--) {tab3[i]=tab4[i]+tab2[i]-48+b;
  44. if (tab3[i]==0) {tab3[i]=0;b=0;};
  45. if (tab3[i]==1) {tab3[i]=1;b=0;};
  46. if (tab3[i]==2) {tab3[i]=0;b=1;};
  47. if (tab3[i]==3) {tab3[i]=1;b=1;};
  48. };
  49. printf("\nLa somme des 2 nombres est :\n");
  50. if (b==1) {printf("1");};
  51. for(i=0; i<=e-1; i++) printf("%d", tab3[i]);
  52. };
  53.  
  54.  
  55. }

Autres pages sur : ligne commande help

Lassé par la pub ? Créez un compte

tu dois passer des arguments à la fonction main:

  1. int main(int argv, char *argc[])


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

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)

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

Goldberg a écritok 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)?



tu déclares tab1 et tab2 comme ça

  1. char * tab1=NULL, * tab2=NULL;
  2.  
  3. if (argc != 3 )
  4. {
  5. /* et pan ! une erreur d'usage dans ta face ! */
  6. return 1;
  7. }
  8.  
  9. tab1=argv[1];
  10. tab2=argv[2];
  11.  
  12. /* ensuite c'est tout pareil */
Lassé par la pub ? Créez un compte