12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- fichier lit_ecrit.cxx
- contient
- - l'action AfficheEntierLong(a)
- - la fonction LitEntierLong
- */
- //inclusion de fichiers entetes
- #include <iostream> //pour cout et cin
- using namespace std;
- #include <cstring> // pour strlen
- //#include <ctype> // pour toascii
- #include "entierlong.h" //pour le type EntierLong
- #include "lit_ecrit.h" /* facultatif : permet de verifier que les types
- des parametres dans les prototypes sont bien les memes que dans les
- actions/fonctions correspondantes*/
- //fonction AfficheEntierLong(n)
- //affiche sur l'ecran un EntierLong
- void AfficheEntierLong(EntierLong a)
- {
- //variables
- int i,j;
- // debut
- // signe
- if (a.negatif)
- {
- cout <<"-";
- }
- // chiffres
- /* on recherche le 1er chiffre non nul (ou le chiffre des unites dans le cas
- d'un entier nul*/
- i=MAXCHIFFRES-1;
- while ((a.chiffres[i]==0)&&(i>0))
- {
- i=i-1;
- }
- /*on ecrit les chiffres "utiles"*/
- for(j=i;j>=0;j=j-1)
- {
- cout << a.chiffres[j];
- }
- cout << endl;
- // fin
- }
- //fonction LitEntierLong
- //lit au clavier un EntierLong
- EntierLong LitEntierLong()
- {
- char Nb[MAXCHIFFRES+1];
- EntierLong a;
- int i,l;
- // debut
- cin >> Nb;
- a.negatif = (Nb[0]=='-');
- l=strlen(Nb);
- if ((a.negatif)||(Nb[0]=='+'))
- {
- //on decale le caractere de fin de chaine d'un indice a gauche
- for(i=0;i<l;i=i+1)
- {
- Nb[i]=Nb[i+1];
- }
- l=strlen(Nb);
- }
- for (i=0;i<l;i=i+1)
- {
- a.chiffres[i] = toascii(Nb[l-1-i])-toascii('0');
- }
- // on complete par des 0
- for (i=l;i<MAXCHIFFRES;i=i+1)
- {
- a.chiffres[i]=0;
- }
- return a;
- // fin
- }
|