j'arrive à la fin du chapitre 2 du cours "apprendre à coder pour les vrais débutants" et je suis bloquée par un bug que je n'arrive pas à résoudre malgré le "pas à pas principal".
Lorsque je lance le projet et que je rentre un nombre, 1 par exemple ça me mets des lignes et des lignes de "c'est plus!" (oui je l'ai ecrit en français;-))
Idem lorsque ça inscrit "c'est moins!".
Je ne vois pas où j'ai mal inscrit le code. Est-ce avec les { } ?
Ce que tu as involontairement créé s'appelle une boucle infinie. Une boucle s'arrête lorsque sa condition initiale est fausse. C'est évident qu'il faut que la condition de la boucle soit au moins une fois vraie. Mais, si aucune instruction ne modifie au moins un élément de la condition, la condition restera toujours vraie et la boucle sera infinie.
Maintenant, peux-tu montrer ton code je te prie ? Comme je sens venir une horrible impression d'écran, il est préférable que tu sélectionnes ton code source, tu le copies, puis tu cliques sur le bouton </> au dessus de la zone de message du forum, tu choisis le langage C# de la fenêtre pop-up et dans sa zone de message tu colles la copie du code source.
En tout cas, si l'ordinateur ne t'indique pas d'erreur, ça signifie que c'est une erreur sémantique. En somme, tu as mal écrit ton code.
Je fais pas de C#, mais, si le langage est facilement lisible, ton problème devrait être rapidement résolu.
merci pour ta réponse rapide, j'ai "bidouillé" en essayant plusieurs modifs du code et par miracle j'ai réussit. Le coté positif c'est que j'ai pu continuer la formation. Le coté negatif c'est que je suis incapable de te dire l'erreur que j'avais faite.
Je te remercie néanmoins de me donner l'astuce de copier le code plutôt de que faire une copie d'écran ;-)
Une des raisons d'exister d'un tel forum comme celui-ci est de te guider dans ton erreur.
Je te propose, si c'est possible, d'enregistrer ton code actuel, celui qui fonctionne bien, dans un autre fichier, appelons le code2.cs, puis tu fais des Ctrl-Z jusqu'à revenir à ton ancien code. Tu postes les deux, tu auras plus de 2 yeux pour comparer
En plus, les erreurs sémantiques sont les plus difficiles à maîtriser parce que l'ordinateur ne les constatera pas ; il ne fait que suivre les consignes de l'équipe qui développe le code source.
- Edité par Le Cobriste 128 31 juillet 2019 à 0:01:24
Merci pour cette reponse et cette aide, désolé pour cette reponse tardive. Bon vais reprendre du début car je suis partie en congés et j'ai mis ça de coté, et j'avoue avoir perdu le fil.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Nombre_Mystere_COnsole
{
class Program
{
static void Main(string[] args)
{
int randomed = new Random().Next(20) + 1;
Console.WriteLine("Saisissez un nombre entre 1 et 20");
string picked = Console.ReadLine();
int pickedNum;
while (int.TryParse(picked, out pickedNum) == false)
{
Console.WriteLine("Oops ce n'est pas une valeur numerique, essaie encore!");
picked = Console.ReadLine();
}
while (pickedNum != randomed)
{
if (pickedNum > randomed)
{
Console.WriteLine("It's less");
}
else
{
Console.WriteLine("It's more");
}
}
//on sort de la boucle quand on a les 2 mêmes nombres donc on a gagné.
Console.WriteLine("Yes tu as gagné" + randomed);
Console.ReadKey();
}
}
}
Bonjour,
et bien voilà j'ai recommencé le cours et je me retrouve avec la même erreur de boucle infinie. J'ai donc copié mon code pour que vous puissiez me dire où je me suis trompée.
Merci de votre aide.
ps: ce qui est étrange c'est que j'ai aussi téléchargé le cours source du cour et que cela me fait la même chose quand je lance le programme...
- Edité par LiseCounis 5 septembre 2019 à 15:21:13
Une fois le premier choix effectué par l'utilisateur, vous ne le laissez pas refaire un choix. Si bien que les valeurs comparées (pickedNum et randomed) restent toujours les mêmes et que le while ci-dessous boucle à l'infini.
LiseCounis a écrit:
while (pickedNum != randomed)
{
if (pickedNum > randomed)
{
Console.WriteLine("It's less");
}
else
{
Console.WriteLine("It's more");
}
}
- Edité par LilyKianii 5 septembre 2019 à 15:51:02
- Est-ce que l'ordre des blocs a une importance? par exemple est-ce que le while ci-dessus doit être placé spécifiquement au dessus du code
"Console.WriteLine("Yes tu as gagné" + randomed); Console.ReadKey();"
Voyez le comme une recette de cuisine, découpez le en plusieurs étapes :
1_ Générer le "nombre caché" de façon aléatoire
2_ Demander à l'utilisateur de proposer une réponse
3_ Vérifier la réponse Si a) La réponse est bonne (--> 4) Si b) La réponse est erronée !! Il faut donc demander à l'utilisateur de refaire une autre proposition puis la vérifier ( --> 2 puis 3)
4_ on annonce la victoire de l'utilisateur
De façon évidente, on en déduit que les étapes qui vont se répéter sont les étapes... 2 et 3. De la même façon, le code que vous citez (qui correspond à l'étape 4), ne doit pas être répété. D'ailleurs il n'est atteint que si 3_a) est atteint également.
Voilà, vous savez ce qui doit venir à l'intérieur de votre boucle, et ce qui ne doit pas y être.
LiseCounis a écrit:
Il me manque un déclic de compréhension dans l'assemblage et je m'énerve de ne pas comprendre....
C'est normal. Oui c'est tout bête. Oui, ce n'est rien de compliqué. Oui, vous avez la solution juste sous la main.
Mais aussi basique que cela puisse être, tout le monde passe par ce genre de blocage. C'est quelque chose qui disparaît très rapidement en pratiquant et si vous persévérez un peu, vous vous étonnerait vous même de la vitesse à laquelle ça disparaît.
L'important est de bien comprendre l'utilité de chaque ligne. Les imbriquer entre eux et dans le bon sens, ça vient tout seul en se creusant la tête.
public void main()
{
//On génère le random
bool estReussi = false;
while (estReussi)
{
//On demande le nombre
while (int.TryParse())
{
//On redemande le nombre
}
if(nombreRecherche < nombrePropose)
{
//C'est plus petit
}
else if(nombreRecherche > nombrePropose)
{
//C'est plus grand
}
else
{
estReussi = true;
}
}
//message bravo
}
Sinon dans ton 2eme while il n'y y a aucun moyen d'en sortir, d'où la boucle infini. Tu ne fais que vérifier le nombre donné sans proposer à l'utilisateur de le modifier par la suite.
Petite question annexe : vous travaillez sur visual studio community 2019 ou 2015 ? Car j'essaie de faire ce cours mais je n'ai trouvé que visual studio community 2019 au téléchargement et je ne m'y retrouve pas. HELP !!!
Petite question annexe : vous travaillez sur visual studio community 2019 ou 2015 ? Car j'essaie de faire ce cours mais je n'ai trouvé que visual studio community 2019 au téléchargement et je ne m'y retrouve pas. HELP !!!
J'ai d'abord commencé sur Visual Studio 2019 puis lorsque j'ai recommencé le cours j'ai trouvé Visual studio 2015 car effectivement je jonglais un epu entre le cours et VS2019.
Cours - apprendre à coder pour les vrais débutants
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Un bon dev est un dev qui sait Googler