[JAVASCOOL] Problème condition IF

Clement49680 -  
KX Messages postés 19031 Statut Modérateur -
Bien le bonsoir, alors pour un projet en classe, je dois faire une " campagne de souscription" pour une compagnie d'assurance, mais j'ai un problème quand au conditions if de ce programme, en effet j'ai des conditions d'obtention pour cette assurance, les voici :

> Le conducteur peut être célibataire, âgé de plus de 25 ans, mais n'avoir jamais eu d'accident,

>Le conducteur peut être une personne du sexe féminin, mariée et n'ayant eu aucun accident,

> Le conducteur peut être une personne du sexe féminin, mariée et âgé de plus de 25 ans,

> Le conducteur peut être âgé de plus de 25 ans et ayant eu un accident,

> Le conducteur peut être une personne du sexe masculin et marié,

> Le conducteur peut être marié, n'ayant jamais eu d'accident et âgé de plus de 25 ans,



J'ai essayé de mettre mes conditions comme ceci :

        if (Femme == 0) { // Si c'est une femme
            if (Celibataire == 0) { // celibataire
                if (Marie == 0) { //mariée
                    if (Age >= 25) { //+25
                        if (Accident == 0) { //accident

                        } else { //pas accident

                        }
                    } else { //-25

                    }
                } else { //pas mariée

                }
            } else { // pas celibataire
                if (Marie == 0)
            }
        } else { // si c'est un homme
            if (Celibataire == 0) { // celibataire
                if (Marie == 0) { //marié
                    if (Age >= 25) { //+25
                        if (Accident == 0) { //accident

                        } else { //pas accident

                        }
                    } else { //-25

                    }
                } else { //pas marié

                }
            } else { // pas celibataire
                if (Marie == 0)
            }
        }


Mais ce que je redoute, c'est un comptage multiple de condition pour une seule et même personne, par exemple un homme marié de plus de 25 ans ayant déjà eu un accident remplis deux condition, et est donc compté deux fois. Donc je viens a vous pour m'aider, je vois pas dans quel ordre demander mes conditions :'(



Code entier de mon programme :

void main() {
    // Déclaration des variables
    int Celibataire = 0;
    int Marie;
    int Age;
    int Accident;
    int Femme;
    int NbP = 0;
    int NbS = 0;
    String boucle = "";

    while (!boucle.equals("N")) {
        // Récupération des informations

        println("La personne est-elle une femme ?");
        Femme = readInt("La personne est-elle une femme ? Oui -> 0// Non -> 1");
        if (Femme == 0) {
            println("La personne est une femme");
        } else {
            println("La personne est un homme");
        }
        println(" ");

        //-----------------------------------------------------------------------------------------//

        println("La personne est-elle celibataire ? ");
        Celibataire = readInt("Celibataire -> 0 // Pas celibataire -> 1");
        if (Celibataire == 0) {
            println("La personne est célibataire");
        } else {
            println("La personne n'est pas celibataire");
        }
        println(" ");
        //-----------------------------------------------------------------------------------------//

        println("La personne est-elle mariée ? ");
        Marie = readInt("Mariée -> 0 // Pas mariée -> 1");
        if (Marie == 0) {
            println("La personne est mariée");
        } else {
            println("La personne n'est pas mariée");
        }
        println(" ");

        //-----------------------------------------------------------------------------------------//

        println("Quel est l'âge de la personne ?  :");
        Age = readInt("Saisir l'age :");
        println("Le demandeur est âgé de " + Age + " ans");
        println(" ");

        //-----------------------------------------------------------------------------------------//

        println("La personne a-t-elle déjà eu un accident ?");
        Accident = readInt("La personne a-t-elle déjà eu un accident ? Oui -> 0// Non -> 1");
        if (Accident == 0) {
            println("La personne à déjà eu un accident");
        } else {
            println("La personne n'à jamais eu d'accident");
        }
        println(" ");

        NbP = NbP + 1;

        //-----------------------------------------------------------------------------------------//	
        if (Femme == 0) { // Si c'est une femme
            if (Celibataire == 0) { // celibataire
                if (Marie == 0) { //mariée
                    if (Age >= 25) { //+25
                        if (Accident == 0) { //accident

                        } else { //pas accident

                        }
                    } else { //-25

                    }
                } else { //pas mariée

                }
            } else { // pas celibataire
                if (Marie == 0)
            }
        } else { // si c'est un homme
            if (Celibataire == 0) { // celibataire
                if (Marie == 0) { //marié
                    if (Age >= 25) { //+25
                        if (Accident == 0) { //accident

                        } else { //pas accident

                        }
                    } else { //-25

                    }
                } else { //pas marié

                }
            } else { // pas celibataire
                if (Marie == 0)
            }
        }

        println("Continuer les enregistrements? Appuyez sur N pour les stopper sinon presser la barre entrée");
        boucle = readString("Continuer les enregistrements ?");
        clear();
    }
    NbS = (NbS / NbP) * 100;
    println("Le nombre de personne souscrit est de" + NbS + "%");
}
</code>




1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Et qu'est-ce que c'est censé faire à chaque fois ?

Tes if et else sont toujours vide, donc ça ne fait jamais rien...

Généralement on fait des imbrications de conditions en fonctions des sorties différentes que l'on veut obtenir, pas en fonction des entrées...
0
Clement49680
 
Oui, mon algo me permet de faire des entrées tant que N n'est pas entré dans boucle,
j'ai rien mis dans mes if car je ne savais pas comment bien les imbriquer :/
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Mais pour bien les imbriquer correctement il faut les factoriser par résultat commun, or ils n'ont aucun résultat pour l'instant, donc ils font tous la même chose (c'est à dire rien), en l'état je ne peux pas t'aider si je ne sais pas ce que sont censés faire tes if/else...
0
Clement49680
 
mes ifs servent a incrémenter NbS ( Nombre de souscription ) en fonction des conditions :
> Le conducteur peut être célibataire, âgé de plus de 25 ans, mais n'avoir jamais eu d'accident,
>Le conducteur peut être une personne du sexe féminin, mariée et n'ayant eu aucun accident,
> Le conducteur peut être une personne du sexe féminin, mariée et âgé de plus de 25 ans,
> Le conducteur peut être âgé de plus de 25 ans et ayant eu un accident,
> Le conducteur peut être une personne du sexe masculin et marié,
> Le conducteur peut être marié, n'ayant jamais eu d'accident et âgé de plus de 25 ans
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Oui, ça je sais, tu l'as déjà dit, et c'est dans ton code.
Mais quelles sont les valeurs associées ? Est-ce que c'est toujours soit vrai, soit faux (pas de souscription) ou est-ce que l'on peut avoir des valeurs intermédiaires (genre premier cas, il paye 80€, deuxième cas il paye 100€, etc.) ?

Par exemple, si on n'avait que le premier cas à traiter, qu'est-ce que tu mettrais dans ton code ?

if (Femme == 0) { // Si c'est une femme
    if (Celibataire == 0) { // celibataire
        if (Marie == 0) { //mariée
            if (Age >= 25) { //+25
                if (Accident == 0) { //accident
                    // ????
0
Clement49680
 
J'ai pas de valeur associées, à la fin je dois juste afficher un pourcentage de personne ayant " reussis " les condition pour obtenir une assurance, si 28 personne ont les condition sur 30, j'aurais une console de 28/30 après avoir remplis les 30 personnes
0