Aide concernant la réalisation d'une application
Résolu/Fermé
bountybob261
Messages postés
5
Date d'inscription
samedi 18 juin 2016
Statut
Membre
Dernière intervention
22 août 2016
-
Modifié par Chris 94 le 31/08/2016 à 15:10
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 30 août 2016 à 07:46
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 30 août 2016 à 07:46
A voir également:
- Aide concernant la réalisation d'une application
- Désinstaller une application sur pc - Guide
- Application gps sans internet - Guide
- Aucune application permettant d'ouvrir ce lien n'a été trouvée - Forum Mobile
- Application partage photo entre amis - Guide
- Apple application support ✓ - Forum Logiciels
5 réponses
Whismeril
Messages postés
19022
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2024
928
30 août 2016 à 00:00
30 août 2016 à 00:00
Bonsoir
tout d'abord
Ici
Quel est l'intérêt de te compliquer la vie? pour quoi un Eqals, pourquoi une comparaisons Ordinale?
Et pour conclure sur cette partie du code, tu as écrit deux fois la même chose.
Donc en cas d'erreur, il te faudra la corriger deux fois.
En programmation, on cherche à éviter ça, en utilisant une méthode, un objet (C# est un langage tout objet...) ou au pire en écrivant judicieusement la boucle
ou encore mieux, en laissant à l'utilisateur la possibilité de répondre en minuscule
tout d'abord
Console.WriteLine("Si tu es prêt? Tape YES!"); string caracpris = Console.ReadLine(); string reponseattendu = "YES";//dans l'absolue cette variable ne sert à rien, elle n'est utilisée qu'une fois avec cette valeur avant "réaffectation" bool areEqual = String.Equals(caracpris, reponseattendu, StringComparison.Ordinal); while (areEqual == false) { Console.WriteLine("es tu sur?"); caracpris = Console.ReadLine(); reponseattendu = "YES";// tu réafffeactes avec la valeur déjà présente... //en plus tu demandes si le joueur est sûr, de ne pas être prêt? pas très logique areEqual = String.Equals(caracpris, reponseattendu, StringComparison.Ordinal); }
Ici
bool areEqual = String.Equals(caracpris, reponseattendu, StringComparison.Ordinal);
Quel est l'intérêt de te compliquer la vie? pour quoi un Eqals, pourquoi une comparaisons Ordinale?
caracpris != reponseattendune te suffit pas?
Et pour conclure sur cette partie du code, tu as écrit deux fois la même chose.
Donc en cas d'erreur, il te faudra la corriger deux fois.
En programmation, on cherche à éviter ça, en utilisant une méthode, un objet (C# est un langage tout objet...) ou au pire en écrivant judicieusement la boucle
string caracpris; do { Console.WriteLine("Si tu es prêt? Tape YES!"); caracpris = Console.ReadLine(); } while (caracpris != "YES")
ou encore mieux, en laissant à l'utilisateur la possibilité de répondre en minuscule
string caracpris; do { Console.WriteLine("Si tu es prêt? Tape YES!"); caracpris = Console.ReadLine(); } while (string.Compare(caracpris, "YES",true) != 0);
Whismeril
Messages postés
19022
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2024
928
Modifié par Whismeril le 30/08/2016 à 00:33
Modifié par Whismeril le 30/08/2016 à 00:33
Dans les instructions, tu as oublié de dire qu'il faut répondre plus ou moins
Ensuite "tu as trouvé" est trop compliqué il y aura forcément des erreurs de frappe, oui ou ok suffisent
Pour "trier" les réponses de l'utilisateur, tu peux faire un switch
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Ensuite "tu as trouvé" est trop compliqué il y aura forcément des erreurs de frappe, oui ou ok suffisent
Pour "trier" les réponses de l'utilisateur, tu peux faire un switch
int xMax = 100; int xMin = 0;//déjà dans les instructions c'est de 1 à 100 pas de 0 à 100... int nbCoups = 0; bool onContinue = true; do { nbCoups++; int xRes = (xMax + xMin) / 2; Console.WriteLine(string.Format("Est-ce {0}? si oui tape OK, sinon tape + ou -",xRes)); switch(Console.ReadLine()) { case "+": xMin = xRes;//c'est plus donc le résultat proposé devient le nouveau minimun break; case "-": xMax=xRes;//inversement break; case "OK": case "ok": case "oK": case "Ok"://j'ai mis les 4 possibilités juste pour te montrer que ça existe Console.WriteLine(string.Format("J'ai trouvé en {0} coups", nbCoups)); Console.ReadLine(); onContinue = false; break; default://toute autre réponse Console.WriteLine("Réponse non attendue"); //comme là le programme va refaire la même proposition, on enlève un coup qui sera ajouté à la prochaine itération nbCoups--; break; } }while(onContinue);
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Whismeril
Messages postés
19022
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2024
928
Modifié par Whismeril le 30/08/2016 à 00:30
Modifié par Whismeril le 30/08/2016 à 00:30
Et là tu constateras que ton problème est résolu, mais en soit ça n'est pas un problème de programmation, mais de math.
La moyenne entre un min est un max c'est (min + max)/ 2...
Ce que tu aurais très vite vu en exécutant le code en pas à pas, la base du débogage....
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
La moyenne entre un min est un max c'est (min + max)/ 2...
Ce que tu aurais très vite vu en exécutant le code en pas à pas, la base du débogage....
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vraiment je te remercie tu m'as montré une manière de faire que j'ignorais totalement! Et oui je me suis rendu compte qu'il fallait faire xmin + xmax mais seulement le lendemain :/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Whismeril
Messages postés
19022
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 avril 2024
928
30 août 2016 à 07:46
30 août 2016 à 07:46
de rien