Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice tableaux et chaines

aidez moi s'il vous plait :)

    18 juillet 2006 à 22:37:00

    Bonjour vous :p

    Bon alors je post car...:
    j'ai des problemes :

    1) avec l'exercice 5 des tableaux du cours de m@teo :)

    voici le code de ma fonction:


    void ordonnerTableau(long tableau[],long tailleTableau)
    {
    long i, ordre = 0, stock1 = 0, stock2 = 0, j;
    do
    {
    ordre = 1;
    for(i = 0;i < tailleTableau; i++)
    {
    if(tableau[i] < tableau[i+1])
    {
    stock1 = tableau[i+1];
    stock2 = tableau[i];
    tableau[i] = stock1;
    tableau[i+1] = stock2;
    }

    }
    }while(ordre != 1);
    for(j = 0;j < tailleTableau; j++)
    {
    printf("%ld\n", tableau[j];
    }
    }




    La fonction tri les nombres 2 a 2.
    Par exemple si j'ai
    666, 13, 14, 7

    il me donne
    13, 666, 7, 14 au lieu de 7,13,14,666

    :/ c'est pas ce que je recherche et j'avoue ne pas avoir compris l'erreur dans le programme :)

    merci.

    2)avec les fonctions de string.h que l'on doit s'entrainer a refaire :)

    a) strcmp qui compare 2 chaines de caracteres et renvoie 0 si elles sont identiques et 1 si elles sont differentes.


    int stringcompart(const char* chaine1, const char* chaine2)
    {
    long i, retour = 0;

    for(i = 0; chaine1[i] != '\0'; i++)
    {
    if(chaine1[i] == chaine2[i])
    retour = 0;
    else if(chaine1[i] != chaine2[i])
    retour = 1;
    }
    printf("%ld\n", retour); // je verifie la valeur de retour (au cas ou)
    return retour;
    }



    Le probleme ici c'est que la chaine compare bien les 2 chaines presque parfaitement.
    Si je rajoute un caractere dans chaine1 la fonction renvoie 0 quand meme.
    Si j'enleve un terme elles sont differentes.
    Si je rajoute 2 termes alors elles sont differentes o_O .

    C'est zarb :p


    b) strbprk recherche dans une chaine un des caractere d'une liste donnee sous forme de chaine et donne la suite de la chaine a partir de ce caractere.

    La je coince total, je peux meme pas donner un ptit bout de code... sauf le prototype :p

    (
    strpbrk(const char* chaine, const char* lettresARechercher);
    )

    J'aurais besoin d'un algorithme ptet ou d'une idee sur la forme de la fonction et tout car j'arrive pas a en trouver moi meme :p .



    Voila c'est tout ( :D ) je crois...

    Merci de m'aider et bisous et bon code :o:)
    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2006 à 23:19:18

      slt,
      pour ta question 1)
      erreur d'algo. fais les etapes de ton code sur papier tu verras ton erreur ;)

      pour ta question 2)
      algo est tres simple :

      char *my_strpbrk(char *s1, char *s2)
      si ma chaine est vide alors je retourne un pointeur NULL. (pas obligatoire mais pas de bug)

      tant que j'arrive a parcourir s1
      {
        tant que j'
      arrive a parcourir s2
          {
           si la lettre de s1 est egale a la lettre de s2 alors je sors de ma boucle
          }
        si une  fois sortie la lettre de s2 est different de \0 alors je sors de ma boucle.
        j'avance l'addresse de s1.
      }
      si j'ai pas trouver de caractere correspondant je retourne NULL.
      sinon je retourne ladresse de s1.
      }
       



      char * my_strpbrk(char *s1, char *s2)
      {
      char* c;
        if (!*s1)
        {
          return (char *) NULL;
        }
        while (*s1)
          {
            for (c = s2; *c; c++)
              {
                if (*s1 == *c)
                  break;
              }
            if (*c)
              break;
            s1++;
          }

        if (*c == '\0')
          s1 = NULL;
        return (char *) s1;
      }

      int main(int ac, char **av)
      {

      printf("%s\n", my_strpbrk("hello", "mmmmmmmmmmmemzgzge")); // ca te retourne ello
           return (0);
      }


      }
      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2006 à 19:23:19

        Merci je vais tester et regarder ca :)
        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2006 à 19:38:22

          2) Base-toi sur ton erreur :
          int stringcompart(const char* chaine1, const char* chaine2)
          {
          long i, retour = 0;
          if(strlen(chaine1) == strlen(chaine2))
          {
              for(i = 0; i <= strlen(chaine; i++)
              {
                  if(chaine1[i] == chaine2[i])
                      retour = 0;
                  else if(chaine1[i] != chaine2[i])
                      retour = 1;
              }
          }
          else
          {
              retour = 1;
          }

          printf("%ld\n", retour); // je verifie la valeur de retour (au cas ou)
          return retour;
          }
          • Partager sur Facebook
          • Partager sur Twitter

          Exercice tableaux et chaines

          × 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