lit_ecrit.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*
  2. fichier lit_ecrit.cxx
  3. contient
  4. - l'action AfficheEntierLong(a)
  5. - la fonction LitEntierLong
  6. */
  7. //inclusion de fichiers entetes
  8. #include <iostream> //pour cout et cin
  9. using namespace std;
  10. #include <cstring> // pour strlen
  11. //#include <ctype> // pour toascii
  12. #include "entierlong.h" //pour le type EntierLong
  13. #include "lit_ecrit.h" /* facultatif : permet de verifier que les types
  14. des parametres dans les prototypes sont bien les memes que dans les
  15. actions/fonctions correspondantes*/
  16. //fonction AfficheEntierLong(n)
  17. //affiche sur l'ecran un EntierLong
  18. void AfficheEntierLong(EntierLong a)
  19. {
  20. //variables
  21. int i,j;
  22. // debut
  23. // signe
  24. if (a.negatif)
  25. {
  26. cout <<"-";
  27. }
  28. // chiffres
  29. /* on recherche le 1er chiffre non nul (ou le chiffre des unites dans le cas
  30. d'un entier nul*/
  31. i=MAXCHIFFRES-1;
  32. while ((a.chiffres[i]==0)&&(i>0))
  33. {
  34. i=i-1;
  35. }
  36. /*on ecrit les chiffres "utiles"*/
  37. for(j=i;j>=0;j=j-1)
  38. {
  39. cout << a.chiffres[j];
  40. }
  41. cout << endl;
  42. // fin
  43. }
  44. //fonction LitEntierLong
  45. //lit au clavier un EntierLong
  46. EntierLong LitEntierLong()
  47. {
  48. char Nb[MAXCHIFFRES+1];
  49. EntierLong a;
  50. int i,l;
  51. // debut
  52. cin >> Nb;
  53. a.negatif = (Nb[0]=='-');
  54. l=strlen(Nb);
  55. if ((a.negatif)||(Nb[0]=='+'))
  56. {
  57. //on decale le caractere de fin de chaine d'un indice a gauche
  58. for(i=0;i<l;i=i+1)
  59. {
  60. Nb[i]=Nb[i+1];
  61. }
  62. l=strlen(Nb);
  63. }
  64. for (i=0;i<l;i=i+1)
  65. {
  66. a.chiffres[i] = toascii(Nb[l-1-i])-toascii('0');
  67. }
  68. // on complete par des 0
  69. for (i=l;i<MAXCHIFFRES;i=i+1)
  70. {
  71. a.chiffres[i]=0;
  72. }
  73. return a;
  74. // fin
  75. }