Problème d'entier!!

nauard39 Messages postés 5 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 3 septembre 2006 - 24 févr. 2006 à 13:40
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 - 24 févr. 2006 à 22:28
Voila, alr j'explique mon problème:

je fais 1programme gerant le numéro de secu sociale (XXXXXXXXXXXXX ZZ ==>X etan lé 13premiers chiffres et Z la cle) et il fau ke je verifie la bonne saisi dc k je fasse le calcul suivant: cle=97-(13premierchiffre%97) or les 13premiers chiffre sont tro gran pr rentrer ds un "int"ou "long" ou "long long" ou encor "unsigned long long".
COMEN FAIRE???merci davance

5 réponses

BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
24 févr. 2006 à 14:08
int64 peut-être?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
24 févr. 2006 à 14:13
Tu peux peut-être utilisé un float ou un double

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
zaibacker Messages postés 97 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 24 janvier 2018
24 févr. 2006 à 14:31
unsigned long long->
,
64 bits,
0 à 18,446,744,073,709,551,615

ca dépasse largement les 13 chiffres donc en theorie cest bon mais utiliser le format "unsigned long long" n'est disponnible qu'avec la norme ISO C99. Peu de compilateurs la supporte. Le seul que je connais est GCC (http://gcc.gnu.org).
ptet que si tu mets #ifdef linux en debut de code puis #endif a la fin ca peut marcher.
Après tu as d'autres moyens sur lesquels te pencher comme le format uint64,enfin ca reste a voir.

Mais je me rapel,sinon que le numero de securite social obeit à des règles: le premier chiffre si tes un homme ou une femme,les suivant la date de naissance etc,donc tu pourais decomposer ce numero a 13 chiffres et tester chaques numero.
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
24 févr. 2006 à 15:43
__int64 ca donne un 64bits aussi et ca compile avec VC++ (j'ai pas teser sous d'autre compilateur)

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
24 févr. 2006 à 22:28
Bonsoir,

Le numero de sécu est une chaine. Pas d'utilisation de grand nombre, mais seulement une décomposition...
A Tester :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char nrSecu[14] = "9999999999999";
char nrInter[4];
int valeur, retour, i=0;

/* initiation de nrInter */
nrInter[i] = nrSecu[i];
i++;
nrInter[i] = nrSecu[i];
i++;
nrInter[i] = nrSecu[i];
i++;
nrInter[i] = 0;

/* premier calcul */
valeur = atoi(nrInter);
retour = valeur % 97;

/* tant qu'on a des chiffres dans le nrSecu */
while(nrSecu[i])
{
sprintf(nrInter, "%d%c", retour, nrSecu[i]);
valeur = atoi(nrInter);
retour = valeur % 97;
i++;
}
printf("cle : %d\n", 97 - retour);
return 0;
}

Matt...
Rejoignez-nous