0
votes

Sinon et si des déclarations c

Je viens de commencer à coder en C, et je ne peux pas comprendre comment ajouter l'idée de doubles , où le programme détecte lorsqu'un joueur a roulé le même numéro sur les matrices et le signaler comme succès critique, échec critique ou cravate critique. Ceci est un simple vérificateur de dés: xxx


0 commentaires

4 Réponses :


0
votes

Je ne sais pas s'il y a une meilleure réponse, mais la façon dont je le ferais, c'est juste vérifier l'égalité au moment où les valeurs des deux dés sont saisies: xxx

et Faites vos chèques quant à savoir si elles gagnent ou non de là?


0 commentaires

0
votes

Votre problème est l'ordre du si code> s

Lorsque le premier si vous donne true em> ne plus être testés parce qu'ils sont tous sous l'autre. P>

Cela signifie que si (die1 == die2) code> ne sera jamais testé si la somme était supérieure à Secret_Target. p>

if (total > SECRET_TARGET) {
    //...
} else {
    // here total <= SECRET_TARGET
    if (die1 == die2 && total > SECRET_TARGET) {...}
    //                  ^^^^^^^^^^^^^^^^^^^^^ no, this is impossible
}


0 commentaires

0
votes

L'erreur est dans votre logique: dans votre "if-ele-ele-ele-ele-ele" séquence xxx

vous exécutez le chèque si (Dieone = = Dietwo && Total> Secret_Target) Après Si (Total> Secret_Target) . N'oubliez pas que seule une des branches sera exécutée alors, lorsque Dieone == Dietwo && Total> Secret_Target Aussi Total> Secret_Target est vrai. Ce dernier vient d'abord et la seconde ne sera même pas évaluée.

Pour vérifier votre Double Dice condition , gère simplement le cas particulier Votre première branche: xxx


1 commentaires

Apparemment, la typo a été éditée ... J'ai édité ma réponse en conséquence.



0
votes

Vous jetez la possibilité d'avoir des prédicats corrects si vous avez malommé le si code> tests (clauses logiques sont discutés dans les commentaires à votre code, incorporé dessus):

if (total > SECRET_TARGET) {
    if (dieOne == dieTwo) {
        printf("Critical Success! Large applause\n");
    } 
 // else { // you have not included this case 
 //        // (total > ST && dice different)
 // }
} else if (total == SECRET_TARGET) {
    printf("Close, but not close enough, try again please\n");
} else {
    printf("Skill Roll failed, Try Again\n");
}


0 commentaires