[Débutant] Numéro de sécurité social
-
<p style="text-align: center;"><strong><span style="font-size:24px;">Numéro de sécurité social</span></strong></p><p style="text-align: center;"><span style="font-size:22px;"><strong>Exercice Java</strong></span></p><p style="text-align: center;"> </p><p style="text-align: center;"> </p><p>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]</p><p> </p><p><span style="font-family:lucida sans unicode,lucida grande,sans-serif;"><strong>Langage :</strong> Java</span></p><p><span style="font-family:lucida sans unicode,lucida grande,sans-serif;"><strong>Niveau :</strong> Débutant (DUT-INFO-S1)</span></p><p><span style="font-family:lucida sans unicode,lucida grande,sans-serif;"><strong>Durée :</strong> 10-15 minutes</span></p><p></p><p><span style="font-size:18px;"><strong>Contexte :</strong></span></p><hr/><p class="java"><strong>Un numéro de sécurité sociale est constitué de 13 chiffres de données :</strong></p><ul><li class="java">Le premier chiffre représente le <strong>sexe </strong>(1 = homme, 2 = femme),</li><li class="java">Les deux chiffres suivants représentent l'<strong>année de naissance</strong>,</li><li class="java">Les deux chiffres suivants représentent le <strong>mois de naissance</strong>,</li><li class="java">Les deux chiffres suivants représentent le <strong>département de naisssance</strong>,</li><li class="java">Les trois chiffres suivants représentent le<strong> numéro de commune de naissance</strong>,</li><li class="java">Les trois derniers chiffres représentent le <strong>numéro d'odre de la naissance dans le mois et la commune.</strong></li></ul><table border="
0
" class="java" name="class"><tbody><tr class="table-ligne"><td align="" valign="top"> </td><td align="" valign="top"> </td></tr></tbody></table><p>S'ajoute à cela une <strong>clef de contrôle</strong> sur 2 chiffres qui est égale à : <strong>97 – le reste de la division du numéro sur 13 chiffres par 97</strong></p><p> </p><p><span style="font-size:18px;"><strong>Sujet :</strong></span></p><hr/><p>Dans un premier temps, vous deverez, à partir d'un <strong>numéro de sécurité social à 13 chiffres</strong> 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.</p><p>Dans un second temps, vous calculerez la clef de sécurité en fonction du numéro de sécurité social.</p><p> </p><p><span style="font-size:18px;"><strong>Correction :</strong></span></p><hr/><p><span style="color:#B22222;"><span style="font-size: 16px;">C'est l'heure de la correction !</span></span></p><p> </p><p>Voici donc un correction de ce qui était attendu :</p><blockquote class="ipsStyle_spoiler" data-ipsspoiler="" tabindex="0"><pre class="html ipsCode prettyprint" data-pbcklang="html" data-pbcktabsize="4">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); }}</pre><p> </p></blockquote><p> </p><p><strong>On peut néanmois apporter certaines modifications :</strong></p><ul><li>Vérification de la validité de la saisie.</li></ul>
-
<p>Intéressent comme exo, mais pas mal d'erreurs (principalement de norme Oracle) dans ton code, quelques moyens de le rendre plus lisible aussi ^^.</p><blockquote class="ipsStyle_spoiler" data-ipsspoiler=""><pre class="ipsCode prettyprint">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)))); }}</pre><p>Et hop, un code un peu plus propre :).</p></blockquote><p> </p><p>Cdt,</p><p>Mog</p>
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login