Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème retour méthode C#

Sujet résolu
    23 mai 2018 à 17:57:55

    Bonjour à tous, je suis actuellement le cours C# débutant, j'en suis au TP calcul en boucle. Petit problème mon programme m'affiche uniquement une fenêtre noire... Alors que quand j'observe la correction de la première méthode j'ai exactement la même chose, honnêtement je sèche... Voici le code en question :

    namespace tp_2_calcul
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(CalculSommeEntiers(1, 10));
                Console.Read();
    
            }
    
            static int CalculSommeEntiers(int a, int b)
            {
               int SommeEntiers = 0;
               for(int i = a; a <= b; i++)
                {
                    SommeEntiers += i;
                }
               return SommeEntiers;
            }
        }
    }
    Je suis preneur de toute remarque, en vous remerciant d'avance !!
    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 18:31:29

      Comme tu débutes je vais te laisser chercher un peu, mais tu as une minuscule erreur qui foire tout, elle se situe dans cette ligne

      for(int i = a; a <= b; i++)

      Sinon niveau remarque, on a tendance à garder les majuscules pour les noms de classes/Méthodes plutôt que les variables voir https://docs.microsoft.com/fr-fr/dotnet/standard/design-guidelines/capitalization-conventions pour le détail ; j'aurais une autre remarque sur les variables à faire mais j'attends que tu aies vu l'erreur pour en parler

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.
        23 mai 2018 à 18:52:36

        Merci d'avoir répondu si vite !! J'ai déclaré ma variable i auparavant mais toujours aucun retour... Et j'ai modifié les majuscules pour bien différencier variables et méthodes.

         static int CalculSommeEntiers(int a, int b)
                {
                   int sommeEntiers = 0;
                   int i;
                   for(i = a; a <= b; i++)
                    {
                        sommeEntiers += i;
                    }
                   return sommeEntiers;
                }

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 19:07:16

          Ton souci ce situe au niveau de la condition de sortie de la boucle tu écris a <= b ; ça veut donc dire qu'on reste dans la boucle tant que a est inférieur ou égal à b ; or, ni a ni b ne changent donc si tu y rentres une fois au départ tu y resteras coincé à jamais (et sinon t'y rentreras pas du tout dans le cas ou a > b)

          Du coup je place ma remarque, donne le plus possible des noms parlants, quitte à ce que ça soit un peu plus long, sommeEntiers c'est très bien (somme suffirait vu que le type int dit déjà qu'il s'agit d'entier) par contre a et b c'est peu parlant et ça peut se confondre facilement avec un i (qui lui n'a pas forcément besoin d'être plus long, les variables de boucle c'est un peu l'exception)

          • Partager sur Facebook
          • Partager sur Twitter
          Censément, quelqu'un de sensé est censé s'exprimer sensément.
            23 mai 2018 à 19:27:47

            Ah d'accord, la boucle est infinie donc ? Je te remercie !!
            • Partager sur Facebook
            • Partager sur Twitter
              23 mai 2018 à 19:44:56

              Oui en l'état c'est soit une boucle infinie (si a <= b au départ) ou "rien du tout" (tu n'entres pas dans la boucle, si a > b au départ)

              Dans les 2 cas, visuellement tu n'as rien à l'écran, soit parce que tu moulines dans la boucle soit parce que tu tombes direct sur le Console.Read qui attend une saisie (tu devrais pouvoir voir la différence entre les 2 cas avec le curseur qui clignote, mais j'imagine que tu n'as pas testé de cas avec a > b)

              Du coup ce que toi tu souhaites faire c'est boucler tant que i est inférieur ou égal à b ; pas a ;)

              • Partager sur Facebook
              • Partager sur Twitter
              Censément, quelqu'un de sensé est censé s'exprimer sensément.
                30 mai 2018 à 11:09:17

                Désolé du retard, merci de l'aide, avec tes explications j'ai pu corriger mon code et miracle ça fonctionne !! Merci encore !!
                • Partager sur Facebook
                • Partager sur Twitter
                  30 mai 2018 à 12:34:06

                  Pense à passer ton sujet en résolu ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Censément, quelqu'un de sensé est censé s'exprimer sensément.

                  Problème retour méthode C#

                  × 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.
                  • Editeur
                  • Markdown