Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Débutant C#] comprandre la signification de ce code

Sujet résolu
    11 mai 2011 à 6:13:57

    Bonjour,

    je voudrais avoir votre avit sur sa signification e/out son utilisé

    using System;
     
    namespace test_charp
    {
        class MainClass
        {
            const int UPCASE_VALUE = 27;
            
            /**
             * Constructeur par défaut
             * */
            public MainClass()
            { }
                
            /**
             * @parametre Str un sting de valeur Chifre.
             * Utiliser pour convertire un chiffre de type String en int + la constante dans un cas correcte
             * dans le cas contraire une exception est lever.
             * */
            public string GetUpperCasedName(string Str)
            {
              string Ret = null;
              int Letter = 0;
            
              Ret=Str;
              try{
                  Letter=int.Parse(Str)+UPCASE_VALUE; //si Str n'est pas un chiffre de type string une exception sera lever
                  Ret = Letter.ToString();
                 }catch(Exception e)
                       {
                        Console.WriteLine("Exception lever : "+ e.Message );
                       }
              return Ret;
            }
            
            /* test the function */
            public void testcode()
            {
                Console.Write("hello : " + this.GetUpperCasedName("hello") + "\n"); //this.GetUpperCasedName("11") 
            }
            
            public static void Main (string[] args)
            {    
                Console.WriteLine ("Methode Main.");
                MainClass o = new MainClass();
                o.testcode();
            }
     
            
        }
    }
    


    aussi se l'on vous manque t'il quelque chose pour ajoute une logique en plus a ce bout de code.

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      11 mai 2011 à 14:16:03

      Le code est assez catastrophique et son utilité est apparemment nulle, mais à part ça je ne vois pas trop ce que tu attends de nous :)
      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2011 à 14:50:29

        Citation : Orwell

        Le code est assez catastrophique et son utilité est apparemment nulle, mais à part ça je ne vois pas trop ce que tu attends de nous :)



        initialement le code été comme suite:
        /* sample code written in C# */
        /* please feel free to modify/rewrite for a better C# version */
        const int UPCASE_VALUE = 27;
        
        /* return the string passed as parameter with first letter upcased */
        string getuppercasedname(string Str)
        {
          string Ret;
          int Letter;
        
          Ret=Str;
          Letter=int.Parse(Str)+UPCASE_VALUE;
          Ret=Letter;
          return Ret;
        }
        
        /* test the function */
        void testcode()
        {
            Console.Write("hello " + GetUppercasedName("hello") + "\n");
        }
        


        Aprés met modification je les corrige pour ne plus avoir de bug (le code du 1er Post) mais je crois que j'ai perdu un peut de sa signification où logique.
        • Partager sur Facebook
        • Partager sur Twitter
          11 mai 2011 à 15:00:07

          Si tu ajoute 27 a une lettre minuscule tu obtiendra un symbol et non une lettre majuscule (enfin si jai bien comprit ce que tu veux faire). Tu te sert du tableau Ascii?

          Pour pouvoir faire quelque chose du genre, tu dois travailler avec un tableau de char car la tu ajoutes 27 au string et non a la premiere lettre.
          • Partager sur Facebook
          • Partager sur Twitter
            11 mai 2011 à 15:00:32

            En gros ton but est de reproduire ce comportement-là ? :euh:

            Console.Write("hello " + "hello".ToUpper() + "\n");
            


            Edit: ah non, il veut juste la premiere lettre en majuscule. Voici:

            static string FirstLetterUpperCase(string str)
            {
                return char.ToUpper(str[0]) + str.Substring(1);
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              11 mai 2011 à 15:05:50

              Seulement pour la premiere lettre (si jai bien comprit) du string pour faire hello -> Hello.

              ps: hum pourquoi je reponds a sa place :/
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                11 mai 2011 à 15:37:47

                Le code originel ne peut pas marcher...il a pas testé son code le type ? (et en plus, ça viole toutes les conventions de nommage C# imaginables...)

                Si tu veux tester l'output de ta méthode, ajoute ça à la fin de ton Main :
                Console.ReadKey();
                

                Sinon le code va s'exécuter et la fenêtre se fermera tout de suite après.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 mai 2011 à 11:07:15

                  ma solution :

                  using System;
                  
                  
                  
                  namespace test_charp
                  
                  {
                  
                      class MainClass
                  
                      {
                  
                          const int UPCASE_VALUE = 32; //27 //Escape en code ASCII (Peut étre utiliser pour supprimes des espaces)
                  
                          string Str;
                  
                          
                  
                          /**
                  
                           * Constructeur par défaut
                  
                           * */
                  
                          public MainClass()
                  
                          {
                  
                            Str = "hello";
                  
                          }
                  
                              
                  
                          /**
                  
                           * @parametre Str un sting de valeur Chifre.
                  
                           * une exéption est est lever l'orceque Str == "   ".
                  
                           * */
                  
                          private string GetUpperCasedName(string Str)
                  
                          {
                  
                            string Ret = null;
                  
                            int Letter, strLength, i=-1;
                  
                            char firstLetter;
                  
                          
                  
                            if (string.IsNullOrEmpty(Str)) return Str;
                  
                              
                  
                            Ret=Str; strLength = Str.Length;
                  
                      
                  
                              do
                  
                              {             
                  
                               i++;
                  
                               Letter = Str[ i ];    
                  
                              }while(Letter == UPCASE_VALUE && (i+1) < strLength);
                  
                              
                  
                            try{        
                  
                                 firstLetter = Char.ToUpper(Str[ i ]); //si Str n'est pas un chifre de type string une exception sera lever    
                  
                                 Ret = Str.Remove(i, 1).Insert(i, firstLetter.ToString());
                  
                               }catch(Exception e)
                  
                                     {
                  
                                      Console.WriteLine("Exeption lever : "+ e.Message );
                  
                                     }
                  
                  
                  
                          return Ret;
                  
                          }
                  
                          
                  
                          /* test the function */
                  
                          public void testcode()
                  
                          {
                  
                              Console.Write("hello : " + this.GetUpperCasedName( this.Str ) + "\n"); 
                  
                          }
                  
                          
                  
                          public static void Main (string[] args)
                  
                          {    
                  
                              Console.WriteLine ("Methode Main....");
                  
                              MainClass o = new MainClass();
                  
                              o.testcode();
                  
                              
                  
                              //Console.ReadKey();
                  
                          }
                  
                  
                  
                          
                  
                      }
                  
                  }
                  

                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 mai 2011 à 13:47:05

                    Bonjour,

                    C'est sûr que c'est beaucoup mieux un code de 90 lignes (je ne compte que la fonction) qui fait plein de trucs tordus là où le code de Orwell fais 4 lignes pour en gros le même résultat
                    (même si en pinaillant je trouve qu'il y a quelques créations de string inutiles, mais j'aime bien pinailler :p )
                    public static string CapitalizeFirst (string str) {
                        if (string.IsNullOrWhiteSpace (str)) return str;
                        var chArr = str.ToCharArray ();
                        chArr [0] = char.ToUpper (chArr [0]);
                        return new string (chArr);
                    }
                    


                    @Aethec: tu n'es pas obligé de rajouter cela (même si on peut) tu peux aussi lancer l'exécution avec CTRL+F5 (désolé j'ai oublier l'intitulé, l'habitude des raccourcis) et en fin d'exécution tu auras le fameux "Appuyez sur une touche pour continuer" ;)

                    Cordialement !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Censément, quelqu'un de sensé est censé s'exprimer sensément.
                      13 mai 2011 à 14:16:30

                      Citation : Sehnsucht

                      (même si en pinaillant je trouve qu'il y a quelques créations de string inutiles, mais j'aime bien pinailler :p )


                      T'abuses, mon code crée deux strings en tout et pour tout - et c'est même pas sûr que SubString fait une copie de la string originale :lol:
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 mai 2011 à 14:20:26

                        Citation : Sehnsucht

                        public static string CapitalizeFirst (string str) {
                            if (string.IsNullOrWhiteSpace (str)) return str;
                            var chArr = str.ToCharArray ();
                            chArr [0] = char.ToUpper (chArr [0]);
                            return new string (chArr);
                        }
                        



                        C'est marrant, j'ai déjà vu ça quelque part...
                        http://www.codemeit.com/code-collectio [...] a-string.html

                        :-°
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 mai 2011 à 17:12:21

                          Citation : Orwell

                          Citation : Sehnsucht

                          (même si en pinaillant je trouve qu'il y a quelques créations de string inutiles, mais j'aime bien pinailler :p )


                          T'abuses, mon code crée deux strings en tout et pour tout - et c'est même pas sûr que SubString fait une copie de la string originale :lol:


                          Oui j'abuse sans doute (même certainement, mais je l'avais précisé :p

                          Citation : Orwell

                          Citation : Sehnsucht

                          (même si en pinaillant je trouve qu'il y a quelques créations de string inutiles, mais j'aime bien pinailler :p )


                          T'abuses, mon code crée deux strings en tout et pour tout - et c'est même pas sûr que SubString fait une copie de la string originale :lol:


                          Oui je me doute ne pas être le premier à l'avoir écrit (Edit: après recherche je le trouve aussi ici) arf j'ai pas pensé à la méthode d'extension, honte sur moi ! :lol:
                          (Note: j'aurais peut-être dû utiliser un bloc unsafe pour traiter la chaîne directement pour avoir une chance que ça n'existe pas ... et encore)
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Censément, quelqu'un de sensé est censé s'exprimer sensément.
                            13 mai 2011 à 19:56:08

                            le même (avec suppression d'espace)
                            using System;
                             
                            namespace test_charp
                            {
                                class MainClass
                                {
                                    const int UPCASE_VALUE = 32; //27 //Escape en code ASCII (Peut étre utiliser pour supprimes des espaces)
                             
                                    string Str;
                                    
                                    /**
                                     * Constructeur par défaut
                                     * */
                                    public MainClass()
                                    {
                                      Str = "hello";
                                    }
                             
                                        
                                    /**
                                     * @parametre Str un sting de valeur Chifre.
                                     * une exéption est est lever l'orceque Str == "   ".
                                     * */
                                    private string GetUpperCasedName(string Str)
                                    {
                                      string Ret = null;
                                      int Letter, strLength, i=-1;
                                      char firstLetter;
                             
                                      if (string.IsNullOrEmpty(Str)) return Str;
                             
                                      Ret=Str; strLength = Str.Length;
                             
                                        do
                                        {             
                                         i++;
                                         Letter = Str[ i ];    
                                        }while(Letter == UPCASE_VALUE && (i+1) < strLength);
                             
                                      try{        
                                           firstLetter = Char.ToUpper(Str[ i ]); //si Str n'est pas un chifre de type string une exception sera lever    
                             
                                           Ret = Str.Remove(i, 1).Insert(i, firstLetter.ToString());
                                         }catch(Exception e)
                                               {
                                                Console.WriteLine("Exeption lever : "+ e.Message );
                                               }
                             
                                    return Ret;
                                    }
                             
                                    /* test the function */
                                    public void testcode()
                                    {
                                        Console.Write("hello : " + this.GetUpperCasedName( this.Str ) + "\n"); 
                                    }
                             
                                    public static void Main (string[] args)
                                    {    
                                        Console.WriteLine ("Methode Main....");
                                        MainClass o = new MainClass();
                                        o.testcode();
                             
                                        //Console.ReadKey();
                                    }
                             
                                }
                             
                            }
                            


                            Merci pour tout
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              13 mai 2011 à 22:24:07

                              Le try...catch est inutile ; char.ToUpper ne renvoie jamais d'exception puisque tu testes si str est pas null avant.
                              De plus, le commentaire contredit le code.
                              Franchement, la solution d'Orwell est bien meilleure que ce machin zarbi que tu as actuellement ;-)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              [Débutant C#] comprandre la signification de ce code

                              × 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