Partage
  • Partager sur Facebook
  • Partager sur Twitter

Alterner Majuscule Minuscule

    28 novembre 2020 à 15:59:31

    Bonjour à tous,

    Je suis en étude d'informatique et pour que l'on débute en C notre prof nous a donné quelques exercices allant de choses très simples à d'autres plus difficiles. 

    Je suis bloqué sur l'un d'eux qui consiste à demander au programme d'écrire l'alphabet en alternant Majuscule et minuscule. Ex : aAbBcC....zZ 

    Je n'arrive pas à trouver de solutions dans nos cours concernant une fonction qui le permettrait donc je m'adresse à vous aujourd'hui dans l'espoir d'obtenir une piste. 

    Bonne journée à tous,

    Cordialement,

    kos.

    -
    Edité par AbcAbc6 28 novembre 2020 à 18:04:56

    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2020 à 16:11:46

      Hello,

      Montre ce que tu as déjà essayé pour que l'on puisse t'aider.

      Une idée: une boucle for() allant de 'A' à 'Z' pour afficher les majuscules et utilisant la fonction tolower() (#include <ctype.h>) pour afficher les minuscules.

      -
      Edité par edgarjacobs 28 novembre 2020 à 16:13:20

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        28 novembre 2020 à 16:16:18

        #include <stdio.h>
        
        int main(void)
        {
           for(char c='a', C='A'; c<='z'; c++, C++) printf("%c%c", c, C);
        
           return 0;
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          28 novembre 2020 à 16:19:58

          edgarjacobs a écrit:

          Hello,

          Montre ce que tu as déjà essayé pour que l'on puisse t'aider.

          Une idée: une boucle for() allant de 'A' à 'Z' pour afficher les majuscules et utilisant la fonction tolower() (#include <ctype.h>) pour afficher les minuscules.


          Salut, 

          Merci de ta réponse, je viens d'essayer ça 

          #include <ctype.h>
          #include <stdio.h>
          #include <stdlib.h>
          
          int main(){
          
              unsigned char c;
              for(c='A' ; c <= 'Z'; c++){
                  putchar((int) c); 
                  putchar(tolower(c));
              }
              return 0;
          
          }

          et ça me renvoie : AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz
          ça m'a l'air pas mal. Merci beaucoup de ton aide concernant la fonction tolower(). 
          PS : je suis allé voir comment l'utiliser sur internet, merci à toi
          J'aurais sûrement d'autres questions concernant mes exercices donc si tu peux me donner un moyen de communication pour te joindre ça m'irait. 

          Bonne journée à toi.

          kos.

          • Partager sur Facebook
          • Partager sur Twitter
            28 novembre 2020 à 19:34:01

            J'aime bien la solution "sadique" de rouloude. :)
            Combinée avec le putchar(), ça devient très bien.
            Ne pas oublier d'envoyer le '\n' à la fin.
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              28 novembre 2020 à 19:50:26

              > Je n'arrive pas à trouver de solutions dans nos cours concernant une fonction qui le permettrait

              La programmation ce n'est pas ressortir des solutions du cours, c'est fabriquer SA solution à partir des éléments du langage de programmation. Le cours sert à montrer les éléments et donner quelques idées de ce qu'on peut en faire.

              A partir de là, il faut inventer sa solution, par exemple

              afficher 'a'+n  et 'A'+n, pour n allant de ... à ....

              en partant de l'idée que 'a'+1 c'est 'b', etc.

              -
              Edité par michelbillaud 28 novembre 2020 à 19:56:06

              • Partager sur Facebook
              • Partager sur Twitter
                29 novembre 2020 à 2:07:53

                Est-ce clairement montré dans les cours qu'une "lettre" est représentée par un code numérique dans l'ordinateur?
                Ça veut dire quoi pour un débutant d'écrire 'a' + 1 ?
                Et c'est quoi le suivant de 'Z'. Est-ce que 'z'+1 ça exiiste?
                Moi, je ne suis pas un prof, et ça fait trop longtemps que je joue avec cela.
                Je ne sais pas si je trouverais les bons mots.
                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  29 novembre 2020 à 8:26:55

                  Jusqu'ici, les solutions consistaient à faire char c = 'a',   suivi de c++ dans la boucle for.

                  Aux dernières nouvelles, en c on apprend assez rapidement que

                  • c++, Ça ajoute 1 à c
                  • Les char ne sont pas autre chose que des petits entiers signés

                  Et que les char servent souvent - Mais pas que - à contenir la valeur d'un caractère quand celui ci est codé sur 7 ou 8 bits, ce qui dépend du codage utilisé, et est de moins en moins vrai

                  -
                  Edité par michelbillaud 29 novembre 2020 à 8:33:32

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 novembre 2020 à 8:32:24

                    Le problème (qui n'en est plus vraiment un) est que rien ne garanti que 'a'+1='b'. La seule garantie que l'on ait en C c'est que les chiffres '0' à '9' sont bien représentés par des entiers consécutifs. Bon, ce n'est plus vraiment un problème car dans notre monde la plupart des personnes utilisent désormais utf8 (qui code les caractère latin de base sur 1 octect avec les lettres de l'alphabet latin de même casse restant consécutives) et que très peu utilisent encore EBCDIC 🙄😆

                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 novembre 2020 à 9:54:15

                      N'oubliez pas de faire un cast en unsigned char. Les fonctions (la plupart de ctype) ont un comportement indéfini si la valeur n'est pas valide dans la plage d'un unsigned char ou EOF.

                      Par ailleurs, tolower ne fonctionnera que sur la table ASCII, attention aux résultats surprenant pour le francophone que vous êtes.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      git is great because Linus did it, mercurial is better because he didn't.

                        29 novembre 2020 à 10:02:11

                        Voilà la meilleure solution  :

                        #include <stdio.h>
                        
                        int main(void)
                        {
                           puts("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ");
                           return 0;
                        }



                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 novembre 2020 à 14:31:58

                          White Crow a écrit:

                          très peu utilisent encore EBCDIC 🙄😆

                          C'est encore très utilisé dans le milieu des « mainframes » mais on n'y programme pas trop en C je crois.

                          Du coup la meilleure solution est bien celle de rouloude ! :)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Alterner Majuscule Minuscule

                          × 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