Soulalex Posté(e) November 6, 2015 Signaler Share Posté(e) November 6, 2015 Numéro de sécurité socialExercice 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 : JavaNiveau : 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. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlexMog Posté(e) November 7, 2015 Signaler Share Posté(e) November 7, 2015 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 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Soulalex Posté(e) November 7, 2015 Auteur Signaler Share Posté(e) November 7, 2015 D'accord c'est toujours bon à savoir parce qu'on nous apprend pas les normes à l'IUT :/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.