Aller au contenu

[Débutant] Numéro de sécurité social


Soulalex
 Share

Recommended Posts

Numéro de sécurité social

Exercice Java

 

 

Dans cet exercice nous tenterons de restituer les informations d'une personne à partir de son numéro de sécurité social. Si vous souhaitez une correction personnalisé, veuillez me joindre votre fichier .java par mail à l'adresse suivante : [email protected]

 

Langage : Java

Niveau : Débutant (DUT-INFO-S1)

Durée : 10-15 minutes

 

 

Contexte :


Un numéro de sécurité sociale est constitué de 13 chiffres de données :

  • Le premier chiffre représente le sexe (1 = homme, 2 = femme),
  • Les deux chiffres suivants représentent l'année de naissance,
  • Les deux chiffres suivants représentent le mois de naissance,
  • Les deux chiffres suivants représentent le département de naisssance,
  • Les trois chiffres suivants représentent le numéro de commune de naissance,
  • Les trois derniers chiffres représentent le numéro d'odre de la naissance dans le mois et la commune.
  

S'ajoute à cela une clef de contrôle sur 2 chiffres qui est égale à : 97 – le reste de la division du numéro sur 13 chiffres par 97

 

Sujet :


Dans un premier temps, vous deverez, à partir d'un numéro de sécurité social à 13 chiffres saisi par l'utilisateur, retrouver le sexe, l'année de naissance, le mois de naissance et le département de naissance de l'utilisateur.

Dans un second temps, vous calculerez la clef de sécurité en fonction du numéro de sécurité social.

 

Correction :


C'est l'heure de la correction !

 

Voici donc un correction de ce qui était attendu :

import java.util.Scanner;

/** SecuriteSocial
  * Détermination des informations sur l'utilisateur 
  * à partir du numéro de sécurité social
  *
  * @author Soulalex
  * @version 1 du 06/11/2015
  */

public class SecuriteSocial
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        
        long numSecu;
        int numSexe, anneeNaissance, moisNaissance, deptNaissance; // Variables pour la décomposition du numéro de sécurité social
        int clef;
        String sexe;

        // On lit le numéro de sécurité social
        System.out.print("Veuillez saisir un numéro de sécurité social à 13 chiffres : ");
        numSecu = sc.nextLong();

        // On décompose notre numéro de sécurité social
        numSexe             = (int)(numSecu / 1000000000000L);
        anneeNaissance  = (int)(numSecu / 10000000000L % 100L);
        moisNaissance   = (int)(numSecu / 100000000L % 100L);
        deptNaissance   = (int)(numSecu / 1000000L % 100L);
        
        // Détermination du sexe
        if (numSexe == 1)
            sexe = "Homme";
        else 
            sexe = "Femme";
        
        // Affichage des informations sur l'utilisateur
        System.out.println("Sexe : "                        + sexe);
        System.out.println("Année de naissance : "          + anneeNaissance);
        System.out.println("Mois de naissance : "           + moisNaissance);
        System.out.println("Département de naissance : "    + deptNaissance);

        // Calcul et affichage de la clef de sécurité
        clef = (int)(97 - (numSecu % 97));
        System.out.println("Votre clef de sécurité : " + clef);
    }
}

 

 

On peut néanmois apporter certaines modifications :

  • Vérification de la validité de la saisie.
Lien vers le commentaire
Partager sur d’autres sites

Intéressent comme exo, mais pas mal d'erreurs (principalement de norme Oracle) dans ton code, quelques moyens de le rendre plus lisible aussi ^^.

import java.util.Scanner;

/** SecuriteSocial
  * Détermination des informations sur l'utilisateur 
  * à partir du numéro de sécurité social
  *
  * @author Soulalex
  * @version 1 du 06/11/2015
  */

public class SecuriteSocial
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        
        long numSecu;
        int numSexe, anneeNaissance, moisNaissance, deptNaissance; // Variables pour la décomposition du numéro de sécurité social
        String sexe;

        // On lit le numéro de sécurité social
        System.out.print("Veuillez saisir un numéro de sécurité social à 13 chiffres : ");
        numSecu = sc.nextLong();

        // On décompose notre numéro de sécurité social
        numSexe         = (int)(numSecu / 1000000000000L);
        anneeNaissance  = (int)(numSecu / 10000000000L % 100L);
        moisNaissance   = (int)(numSecu / 100000000L % 100L);
        deptNaissance   = (int)(numSecu / 1000000L % 100L);
        
        // Détermination du sexe
        // Alors, d'une, la norme Oracle spécifie que les brackets
        // ({}) sont obligatoires dans ce genre de contexte.
        // (à titre informatif, voici la norme de java: http://www.oracle.com/technetwork/articles/javase/codeconvtoc-136057.html )
        // Ensuite, un ternaire est quand même plus appréciable, au vue du contexte
        // et de la simplicité de ton if.
        sexe = (numSexe == 1 ? "Homme" : "Femme");

        // Affichage des informations sur l'utilisateur
        System.out.println("Sexe : "                        + sexe);
        System.out.println("Année de naissance : "          + anneeNaissance);
        System.out.println("Mois de naissance : "           + moisNaissance);
        System.out.println("Département de naissance : "    + deptNaissance);

        // Calcul et affichage de la clef de sécurité
        // la variable était inutile, ça ne sert à rien de surcharger la stack
        // (même si elle est virtuelle) pour rien.
        System.out.println("Votre clef de sécurité : " + ((int)(97 - (numSecu % 97))));
    }
}

Et hop, un code un peu plus propre :).

 

Cdt,

Mog

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chargement
 Share

×
×
  • Créer...