Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit défi

Très facile, pour ceux qui s'ennuyent

Anonyme
    21 avril 2006 à 21:38:05

    Petite révision
    Voila un petit code simple a faire :

    Il faut une fonction qui affiche une chaine de caractère passé en paramètres, mais qui n'afficher qu'un certain nombre de caractère par ligne (disons 40) , avant de passer a la ligne. Il faut aussi repérer la suite de caractères suivantes : "/line" qui permet de passer a la ligne directement.

    Je crois que c'est bon pour un petit exercice, ce qui vous fera revoir vos chaines de caractères
    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2006 à 22:12:13

      salut,
      la chaine entré par l'utilisateur doit etre entre combien et combien pour savoir quel tailole je dois mettre à mon tableau?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        21 avril 2006 à 22:13:54

        la chaine n'est pas rentrée par l'utilisateur, mais si tu met 500, c'est amplement suffisant
        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2006 à 22:17:37

          void affiche(const char* chaine)
          {
              int pos=0;
              while(*chaine!='\0')
              {
                  if(strncmp(chaine,"/line",5)==0)
                  {
                      chaine+=5;
                      printf("\n");
                      continue;
                  }

                  printf("%c",*chaine);
                  pos++;
                  if(pos==40)
                  {
                      printf("\n");
                      pos=0;
                  }
                  chaine++;
              }
          }
          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2006 à 22:19:22

            Citation : remram44


            Et le formatage ? OK, VU.

            Citation : acieroid

            mais qui n'afficher[a] qu'un certain nombre de caractère par ligne (disons 40) , avant de passer a la ligne.


            Je suggère que cette largeur soit paramètrable et que les mots ne soient pas coupés...

            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
            Anonyme
              21 avril 2006 à 22:26:52

              Citation : -ed-


              Citation : acieroid

              mais qui n'afficher[a] qu'un certain nombre de caractère par ligne (disons 40) , avant de passer a la ligne.



              Je suggère que cette largeur soit paramètrable et que les mots ne soient pas coupés...



              exactement, merci pour la correction :D
              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2006 à 22:59:33

                Voila,
                Secret (cliquez pour afficher)
                void afficher(const char chaine[])
                {
                   long i, j = 40;
                   long longueurChaine = strlen(chaine);
                   long* pointeurJ = &j;

                   for(i=0; i < longueurChaine; i++)
                   {
                       printf("%c", chaine[i]);
                       fflush(stdout);

                       if(chaine[i] == ' ' && i >= j)
                       {
                               *pointeurJ = i + 40;
                                i++; //saute l'espace
                                printf("\n");
                       }
                   }
                }
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  22 avril 2006 à 10:50:24

                  Voila ce qui prouve qu'il y a plusieurs facon de coder, je dis donc bravo a patxiku et a remram44. :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 avril 2006 à 17:28:15

                    Citation : patxiku

                    Voila,


                    Marche pas :
                      afficher("Maitre corbeau sur un arbre perche, tenait en son bec un fromage.");

                    donne :

                    Maitre corbeau sur un arbre perche, tenait
                    n son bec un fromage.

                    Un caractère est détruit...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      23 avril 2006 à 19:20:17

                      En faite je voulais supprimer l'espace blanc, mon nouveau code le supprime.

                      void afficher(const char chaine[])
                      {
                         long i, j = 40;
                         long longueurChaine = strlen(chaine);
                         long* pointeurJ = &j;

                         for(i=0; i < longueurChaine; i++)
                         {
                             if(chaine[i] == ' ' && i >= j)
                             {
                                     *pointeurJ = i + 40;
                                      printf("\n");
                             }
                             else
                             {
                                 printf("%c", chaine[i]);
                                 fflush(stdout);
                             }


                         }
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 avril 2006 à 19:42:18

                        Citation : patxiku

                        En faite je voulais supprimer l'espace blanc, mon nouveau code le supprime.


                        Ca fonctionne mais c'est assez tordu. Je propose ceci :

                        #include <stdio.h>
                        #include <string.h>

                        void afficher(int larg, const char chaine[])
                        {

                           char const *p = chaine;
                           size_t j = 0;

                           while (*p != 0)
                           {
                              if (*p == ' ' && j >= larg)
                              {
                                 j = 0;
                                 printf("\n");
                              }
                              else
                              {
                                 printf("%c", *p);
                                 j++;
                              }
                              p++;
                           }
                           fflush(stdout);
                        }

                        int main(int argc, char *argv[])
                        {

                           afficher(40, "Maitre corbeau sur un arbre perche, tenait en son bec un fromage.");

                           return 0;
                        }

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          23 avril 2006 à 20:02:27

                          Citation : patxiku

                          pourquoi est-ce tordu?


                          Trop d'indexes... le pointeur sur j, j'ai pas compris...
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            23 avril 2006 à 20:36:46

                            que sont les indexs??
                            pour le ponteur sur j je ne pensais pas que ça aurait marché si je changeais directement j.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 avril 2006 à 21:48:39

                              Citation : patxiku

                              que sont les indexs??


                              i, j...

                              Citation : patxiku


                              pour le ponteur sur j je ne pensais pas que ça aurait marché si je changeais directement j.


                              Aucune raison que ça ne fonctionne pas.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Music only !

                              Petit défi

                              × 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