Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement de logiciels
  4. C
  5. Exercices
  6. strend

strend

Planifié Épinglé Verrouillé Déplacé Exercices
8 Messages 4 Publieurs 2.8k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • D Hors-ligne
    D Hors-ligne
    davydavek
    a écrit sur dernière édition par
    #1

    Hello, voici un petit exercice, tiré du livre "The C Programming Language" (K&R).

    En suivant ce prototype (vous  pouvez changer le nom des paramètres) :

    int strend(char *s, char *t)
    

    Créez une fonction qui retourne 1 si la string s se termine par la string t,sinon, retourne 0.

    Exemples :

    strend("ABCDavy","Davy"); // == 1
    strend("Melinyel","oyel"); // == 0
    strend("Microsoft","sofa"); // == 0
    strend("Forum","rum"); // == 1
    

    Je posterais ma solution mardi  🙂

    C# dev

    github.com/DavyWk

    1 réponse Dernière réponse
    1
    • AlexMogA Hors-ligne
      AlexMogA Hors-ligne
      AlexMog
      Modérateur spécialisé
      a écrit sur dernière édition par
      #2

      OK, amusant, je part du principe qu'on a le droit aux fonctions de la libc, ce qui donnerais:

      #include <stdlib.h>
      
      int strend(char *s, char *t)
      {
          char *tmp;
      
          tmp = s;
          while ((tmp = strstr(tmp, t)) != NULL);
          return (tmp != NULL && strlen(tmp) == strlen(t));
      }
      

      Multiplayer GameDev @ Unexpected

      Mon CV

      1 réponse Dernière réponse
      1
      • D Hors-ligne
        D Hors-ligne
        davydavek
        a écrit sur dernière édition par
        #3

        @Alex:

        strstr retourne a la première apparition de t, donc avec ta version :

        strend("ABDAVYBD","BD");
        

        retourne 0, alors que ça devrait retourner 1.

        C# dev

        github.com/DavyWk

        1 réponse Dernière réponse
        0
        • AlexMogA Hors-ligne
          AlexMogA Hors-ligne
          AlexMog
          Modérateur spécialisé
          a écrit sur dernière édition par
          #4

          Voilà, j'ai edit mon code 😉

          Multiplayer GameDev @ Unexpected

          Mon CV

          1 réponse Dernière réponse
          1
          • D Hors-ligne
            D Hors-ligne
            davydavek
            a écrit sur dernière édition par
            #5

            Voici ma solution :

            Je sais pas ce qu'il c'est passer avec l'identation ...

            int my_strend(const char *str, const char *ending)
            {
            int lStr = my_strlen(str);
            int lEnd = my_strlen(ending);
            
            if(!lStr || !lEnd)
            return 0;
            
            const char *iterator = str + lStr - lEnd;
            int i = 0;
            while(iterator[i] != '\0' && ending[i] != '\0')
            {
            if(iterator[i] != ending[i])
            {
            return 0;
            }
            i++;
            }
            
            return 1;
            }
            

            Itère de str - taille d'str + taille de l'ending, jusqu’à la fin de str, en comparant chaque caractère.

            Dommage qu'il n'y ai pas eu plus de participants 😞

            C# dev

            github.com/DavyWk

            1 réponse Dernière réponse
            0
            • AzadA Hors-ligne
              AzadA Hors-ligne
              Azad
              a écrit sur dernière édition par
              #6

              Merci d'avoir pris la peine d'avoir fait un exercice, je ne l'avais pas vu cependant c'est une très bonne initiative et très pédagogique. 🙂
              Pour la peine, je vous donne un point de réputation aux deux protagonistes de la discussion (et aussi parce qu'il y a Mint dans la signature).

              Good job !

              Administrateur du forum.

              Contactez-moi par message privé ou par mail.

              1 réponse Dernière réponse
              1
              • SoulalexS Hors-ligne
                SoulalexS Hors-ligne
                Soulalex
                a écrit sur dernière édition par
                #7
                #include <stdio.h>
                #include <string.h>
                
                int my_strend(char *s, char *t);
                int my_strlen(char *str);
                
                int main()
                {
                    int *result;
                
                    result[0] = my_strend("TEST", "ST");
                    result[1] = my_strend("Melinyel", "Forum");
                
                    printf("%d\n", result[0]);
                    printf("%d\n", result[1]);
                
                    return (0);
                }
                
                int my_strend(char *s, char *t)
                {
                    int lenght_s;
                    int lenght_t;
                    int i;
                    int j;
                
                    lenght_s = strlen(s);
                    lenght_t = strlen(t);
                    j = 0;
                
                    // On regarde si les dernières lettres de "s" correspondent à "t".
                    for (i = lenght_s - lenght_t; i < lenght_s; i++)
                    {
                        if (s[i] != t[j])
                            return (0);
                
                        j++;
                    }
                
                    return (1);
                }
                
                int my_strlen(char *str)
                {
                    int lenght;
                
                    for (lenght = 0; str != "\0"; lenght++);
                
                    return lenght;
                }
                

                Voila mon code mais j'ai un problème avec ma fonction "my_strlen", il faut que je regarde ça de plus près :unsure:

                Soulalex, Administrateur de Melinyel
                + E-Mail : [[email protected]](mailto:[email protected] "Lien vers un courriel")
                + GitHub : [https://github.com/Soualex](https://github.com/Soualex "Lien externe")

                1 réponse Dernière réponse
                0
                • D Hors-ligne
                  D Hors-ligne
                  davydavek
                  a écrit sur dernière édition par
                  #8

                  Suffit d'un peu de relecture 😉

                  Ta fonction my_strlen n’incrémente pas le pointeur str, donc si le premier caractère n'est pas '\0' ça fait une boucle infinie.

                  C# dev

                  github.com/DavyWk

                  1 réponse Dernière réponse
                  0

                  Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

                  Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

                  Grâce à votre participation, ce message peut devenir encore meilleur 💗

                  S'inscrire Se connecter
                  Répondre
                  • Répondre à l'aide d'un nouveau sujet
                  Se connecter pour répondre
                  • Du plus ancien au plus récent
                  • Du plus récent au plus ancien
                  • Les plus votés


                  • Se connecter

                  • Connectez-vous ou inscrivez-vous pour faire une recherche.
                  Powered by NodeBB Contributors
                  • Premier message
                    Dernier message
                  0
                  • Catégories
                  • Récent
                  • Mots-clés
                  • Populaire
                  • Web
                  • Utilisateurs
                  • Groupes