Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement de logiciels
  4. Java
  5. Exercices
  6. [Débutant] Numéro de sécurité social

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

Planifié Épinglé Verrouillé Déplacé Exercices
3 Messages 2 Publieurs 3.1k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • SoulalexS Hors-ligne
    SoulalexS Hors-ligne
    Soulalex
    a écrit sur dernière édition par
    #1

    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.

    Soulalex, Administrateur de Melinyel
    + E-Mail : [[email protected]](mailto:[email protected] "Lien vers un courriel")
    + GitHub : [https://github.com/Soualex](https://github.com/Soualex "Lien externe")

    1 réponse Dernière réponse
    0
    • AlexMogA Hors-ligne
      AlexMogA Hors-ligne
      AlexMog
      Modérateur spécialisé
      a écrit sur dernière édition par
      #2

      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

      Multiplayer GameDev @ Unexpected

      Mon CV

      1 réponse Dernière réponse
      0
      • SoulalexS Hors-ligne
        SoulalexS Hors-ligne
        Soulalex
        a écrit sur dernière édition par
        #3

        D'accord c'est toujours bon à savoir parce qu'on nous apprend pas les normes à l'IUT 😕

        Soulalex, Administrateur de Melinyel
        + E-Mail : [[email protected]](mailto:[email protected] "Lien vers un courriel")
        + GitHub : [https://github.com/Soualex](https://github.com/Soualex "Lien externe")

        1 réponse Dernière réponse
        0

        Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

        Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

        Grâce à votre participation, ce message peut devenir encore meilleur 💗

        S'inscrire Se connecter
        Répondre
        • Répondre à l'aide d'un nouveau sujet
        Se connecter pour répondre
        • Du plus ancien au plus récent
        • Du plus récent au plus ancien
        • Les plus votés


        • Se connecter

        • Connectez-vous ou inscrivez-vous pour faire une recherche.
        Powered by NodeBB Contributors
        • Premier message
          Dernier message
        0
        • Catégories
        • Récent
        • Mots-clés
        • Populaire
        • Web
        • Utilisateurs
        • Groupes