Bonjour à tous,
Dans un de mes programmes en C, je dois vérifier la structure d'un compte bancaire de type: xxx - xxxxxxx - xx (14 caractères).
Ma fonction actuelle me permet de récupérer les 3 premiers chiffres que je compte multiplier par 10 000 000 et y ajouté les 7 chiffres suivants.
Actuellement, ça se fait. Enfin, ça se fait... si c'était réellement vrai, je ne serais pas là !
Il s'avère que pour un compte de type 667-1234567-89 (ce numero n'est pas valide, évidemment !), le résultat attendu est x = (667 * 10000000) + 1234567 = 6 671 234 567.
Cependant, le type le plus volumineux que je peux utiliser est un unsingled long, qui va au grand maximum à un peu plus de 4 000 000 000 ; ce qui n'est donc pas assez.
Après recherche, il existe deux solutions:
- décomposé le chiffre en deux et faire son modulo séparément, additionné le modulo et j'obtiens le modulo initialement prévu.
- utilisé le type (un)signed long long ou encore __int64.
Concernant la première solution, elle m'a été demandée de ne pas m'en servir.
Pour la deuxième, mon compilateur n'accepte pas le long long (norme C99, or je suis en norme C90 sous Borland C++ 4.5) et le __int64 ne se compile pas non plus.
Quelqu'un aurait-il une solution à m'indiquer ? Une piste à suivre ?
Merci d'avance !
Partager