IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algo sur une assurance (simple)


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 42
    Points : 52
    Points
    52
    Par défaut Algo sur une assurance (simple)
    Bonjour !

    J'aurai aimé savoir, déjà ce que vous en pensez globalement, mais aussi si le second algorithme est valable ?
    Lequel est le plus compréhensible selon vous ?

    Pour info, c'est un problème sur le tarif d'une assurance (qui va du moins cher au plus cher : bleu, vert, orange, rouge) et la dernière partie de l'algo signifie juste que si la personne a déjà fait plus d'un an dans la boite, on lui donne la meilleure assurance possible.

    Merci d'avance

    (au besoin je pourrai mettre l'énoncé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Variables age, accident Type Entier;
    Variable permis Type Boolean;
    Variable assu Type String;
     
    Début
    Si (age <= 25 ans) Alors
    	Si (permis < 2 ans) Alors
    		Si (accident < 0) Alors Ecrire "assu ROUGE";
    		Sinon Ecrire "assu REFUSE";
    		Fin Si
     
    	Sinon Si (accident = 0) Alors Ecrire "assu ORANGE";
    	Sinon Si (accident = 1) Alors Ecrire "assu ROUGE";
    		Sinon Ecrire "assu REFUSE";
    	Fin Si
     
    Sinon
    	Si (permis < 2 ans) Alors
    		Si (accident = 0) Alors Ecrire "assu ORANGE";
    		Sinon Si (accident = 1) Alors Ecrire "assu ROUGE";
    		Sinon Ecrire "assu REFUSE";
    		Fin Si
     
    	Sinon Si (accident = 0) Alors Ecrire "assu VERT";
    	Sinon Si (accident = 1) Alors Ecrire "assu ORANGE";
    	Sinon Si (accident = 2) Alors Ecrire "assu ROUGE";
    		Sinon Ecrire "assu REFUSE";
    Fin Si;
     
    Si (date_entree >= date_actuelle + 1) Alors
    	Si assu = "ROUGE" Alors assu = "ORANGE";
    	Sinon Si assu = "ORANGE" Alors assu = "VERT"
    	Sinon assu = "BLEU";
    Fin Si
    Fin
    Le second :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Variables age, accident, permis Type Entier;
    Variables date_entree, date_actuelle type Date;
    Variable assu Type String;
     
    Début
    Ecrire "REFUSE"
    	Si (age <= 25 ans  ET permis <= 2 ans ET accident > 0)
    	OU (age <= 25 ans  ET permis > 2 ans ET accident > 1)
    	OU (age > 25  ans ET permis  <= 2 ans ET accident > 1)
    	OU (age > 25  ans ET permis > 2 ans ET accident > 2);
    Fin Si
     
    Ecrire "ROUGE"
    	Si (age <= 25 ans ET permis <= 2 ans ET Accident = 0)
    	OU (age <= 25 ans ET permis > 2 ans ET accident = 1)
    	OU (age > 25 ans ET permis <= 2 ans ET accident = 1)
    	OU (age > 25 ans ET permis > 2 ans ET accident = 2);
    Fin Si
     
    Ecrire "ORANGE"
    	Si (age <= 25 ans ET permis > 2 ans ET accident = 0)
    	OU (age > 25 ans ET permis <= 2 ans ET accident = 0)
    	OU (age > 25 ans ET permis > 2 ans ET accident = 1)
    Fin Si
     
    Ecrire "VERT"
    	Si (age > 25 ans ET permis > 2 ans ET accident = 0)
    Fin Si
     
    Si (date_entree >= date_actuelle + 1) Alors
    	Si assu = "ROUGE" Alors assu = "ORANGE";
    	Sinon Si assu = "ORANGE" Alors assu = "VERT"
    	Sinon Si assu = "VERT" Alors assu = "BLEU;
    Fin Si
    Fin

  2. #2
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Bonjour,

    Les algos sont pas mal, quelques petites remarques toutefois :
    • Dans le premier algo
      • Tu déclare permis comme un booléen mais tu l'utilises comme un entier/date
      • au troisième si Si (accident < 0) Alors Ecrire "assu ROUGE"; je pense qu'il y a une petite erreur de frappe un < au lieu d'un =
      • date_entree et date_actuelle ne sont pas définis
    • Dans le second
      • Tu n'utilises plus la variable assu dans la première partie, du coup dans la seconde partie ça ne peut pas fonctionner
      • les conditionnelles de la première partie sont moins classiques mais restent lisibles


    Pour pinailler un peu Tu aurais pu choisir de donner une valeur par défaut à assu puis faire tes conditionnelles. Comme valeur par défaut tu peux choisir "REFUSE" et ne changer que si le demandeur est éligible (ce que font généralement les assurances ) ; ou mieux donner une valeur par défaut comme "CAS NON COUVERT" pour intercepter des cas qui n'auraient pas été prévus, ou des cas oubliés ...

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 42
    Points : 52
    Points
    52
    Par défaut
    Merci l'ami pour ta réponse !

    En effet, j'ai fais quelques petites erreurs car, après l'écriture, j'ai trouvé des modifs à faire mais je ne les ai pas corrigé de partout... Merci de les avoir vu

    Et le second algo alors est valable ? (comprendre pour un développeur lambda)
    Tu as une préférence de lisibilité entre les deux ?

    Et du coup, pour assu, je le déclare par défaut en "NON COUVERT", je traite les cas du "REFUSE" et si ce n'est ni "REFUSE" ni une assurance de couleur je met le cas défaut ?

    Sympa tes idées, je t'en remercie

  4. #4
    Membre expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Points : 3 352
    Points
    3 352
    Par défaut
    Citation Envoyé par devdav Voir le message
    Merci l'ami pour ta réponse !

    En effet, j'ai fais quelques petites erreurs car, après l'écriture, j'ai trouvé des modifs à faire mais je ne les ai pas corrigé de partout... Merci de les avoir vu

    Et le second algo alors est valable ? (comprendre pour un développeur lambda)
    Tu as une préférence de lisibilité entre les deux ?
    Oui il est lisible. Personnellement, je préfère voir les conditions en premier mais bon ; l'algo c'est aussi une question d'idiomes et on finit toujours par se rapprocher d'un langage d'implémentation.
    Ma préférence va donc vers la première mouture.

    Citation Envoyé par devdav Voir le message
    Et du coup, pour assu, je le déclare par défaut en "NON COUVERT", je traite les cas du "REFUSE" et si ce n'est ni "REFUSE" ni une assurance de couleur je met le cas défaut ?

    Sympa tes idées, je t'en remercie
    Non, dès le départ tu donne la valeur "NON COUVERT" à assu. Pour la dernière partie il faut impérativement que assu possède une valeur.
    Ensuite tu déroules tes cas, et si jamais tu en as oublié alors le fait que assu vaille "NON COUVERT" t'indique qu'aucune conditionnelle n'a été prise : c'est donc un cas que tu as oublié de prévoir. Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Début
    assu="NON COUVERT"
    Si (age <= 25 ans) Alors
    	Si (permis < 2 ans) Alors
    		Si (accident < 0) Alors  assu="ROUGE";
    .........
    tous les cas
    .........
    Si assu = "NON COUVERT" Alors
      Écrire "Erreur : aucun cas prévu ne correspond"
      Abort.
    Fin Si
    .........

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 42
    Points : 52
    Points
    52
    Par défaut
    Ah oui OK, j'ai compris.
    On déclare "assu" avec comme valeur "défaut" et à la fin on traite la cas où assu n'a pas de valeur (la variable prendra donc la valeur "défaut") !

    Merci beaucoup !

    Au fait, si je déclare "permis" en Booleen et que je l'initialise avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Variable permis Type Booleen
    permis <= 2 ans <- true
    Est-ce que dans mon algo je pourrai mettre ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Ecrire "REFUSE"
    Si (age <= 25 ans  ET permis == true ET accident > 0)
    OU (age <= 25 ans  ET permis == false ET accident > 1)
    Car mettre en Booleen permet d'économiser de la mémoire à la place d'un Entier, non ?

    PS: tu as mis un "Abort", c'est parce que tu n'utilises pas le "Sinon" ?
    C'est important de le mettre si c'est le cas ?

Discussions similaires

  1. Aide sur une requête simple
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/01/2008, 20h21
  2. Erreur 1004 sur une boucle simple
    Par ruzakruzak dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/07/2007, 10h00
  3. Double background sur une page simple sans frame.
    Par kuranes dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 20/09/2006, 23h59
  4. Question rapide sur une requette simple
    Par batoubat dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/06/2006, 19h39
  5. Conseils sur une API simple pour Windows
    Par alejandro dans le forum Choisir un environnement de développement
    Réponses: 4
    Dernier message: 28/04/2005, 19h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo