Pb de fonction

widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   -  
lirey83 Messages postés 76 Statut Membre -
bonjour tout monde, je doit faire un programme dont l'énoncé est:
il s'agit d'ecrire deux fonction:
1 - une qui prend en parametre une chaine de caractere et qui renvoi Vrai si celle-ci contient un nombre binaire (dc avec des 0 et des 1..) de longueur quelconque.
2 -une autre qui prend deux chaine de caractere en parametre, une qui est sensé ocntenir un nombre binaire et l'autre qui est le resultat de votre fonction et dans laquelle vous écrivez la version hexadecimal du nombre binaire.

donc j'ai fait mon algo:

1) fonction estBinaire(in tab = chaine)ret bool

i affecté de 0
tant que tab[i]different de '\0'
si tab[i]different '0' ou tab[i]different de '1'
alors retour-de-estBinaire affecté de faux
fsi
i affecté de i+1
ftantque
retour-de-estBinaire affecté de vrai

2) fonction convert-hexa(in tab bin=chaine out, tab hex=chaine)=ret vide

Lbin affecté de longueur (tab bin)
Lhexa affecté de Lbin/4
si (Lbin %4) different de 0 alors
Lhexa affecté de Lhexa + 1
fsi
tab-hexa [Lhexa] affecté de '\0'
x affecté de Lbin-1
i affecté de 0
val affecté de 0
tant que (x>0)
si (i=4) alors
tab-Hex [Lhexa] affecté de tab-hexa-const [val]
Lhexa affecté de Lhexa-1
val=0
i=0
fsi
si tab bin [x]='1'
alors val affecté de val + puissance (2,i)
fsi
i affecté de i+1
x affecté de x-1
ftantque

voila mon algo, je pense qu'il est juste, le probleme vient de mon programme, je ne sait pas comment faire dc si vous pouviez me faire mon programme que je voit comment ecrire mes fonction se serait vraiment gentille. Ne pensez pas que ceci est un devoir a faire, je suis en pleine revision pour mes partiel et je n'arrive pas a comprendre les fonction
Merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

13 réponses

  1. _goni Messages postés 964 Statut Membre 38
     
    Salut,
    Pour cela il faut aussi savoir dans quel langage tu dois développer.
    0
  2. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    il faut que je le fasse en C++
    0
  3. _goni Messages postés 964 Statut Membre 38
     
    désolé mais la dessus je ne peux pas t'aider alors. Désolé
    0
  4. The Edge Messages postés 155 Statut Membre 21
     
    Bon, pour la premiere fonction voici un exemple en C qui doit etre a peu pret pareil qu'en C++ :

    01> #define TRUE   1
    02> #define FALSE 0
    03>
    04> int    my_function(char *str)
    05>  {
    06>    int    i;
    07>
    08>    for (i = 0; str[i] != '\0'; i++) 
    09>      if (str[i] == '0' || str[i] == '1') 
    10>            return (TRUE);
    11>    return (FALSE);                       
    12>  }
    
    

    01 et 02 On definie deux variable, TRUE et FALSE, respectivement valant 1 et 0
    04 fonction qui renvoi un entier (int) et qui prend en parametre une chaine de carateres (char *str) s'appelant str
    06 on declare une variable i de type entier
    08 on va parcourir la chaine "case par case" tant que on tombe pas sur la fin de la chaine ('\0')
    09 si un caractere dans la chaine est egal a 0 ou 1 ...
    10 ... la fonction renvoi TRUE et se termine
    11 par contre si la machine arrive a cette ligne, c que la fonction ne s'est pas terminee avec TRUE,
    et se termine donc en renvoyant FALSE
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. The Edge
     
    oops, desole, mon programme fonctionne que sil trouve au moins un '1' ou un '0'., javais zappe une phrase.
    01> #define TRUE   1
    02> #define FALSE 0
    03>
    04> int    my_function(char *str)
    05>  {
    06>    int    i;
    07>
    08>    for (i = 0; str[i] != '\0' || (str[i] = '1' && str[i] = '0'); i++) ;
    09>    if (i = strlen(str))
    10>         return (TRUE);
    11>    return (FALSE);                       
    12>  }
    
    0
  7. The Edge Messages postés 155 Statut Membre 21
     
    juste 2 trucs, mets :
    #include <string.h>
    juste apres #define FALSE 0

    et c'est pas => if (i = strlen(str))
    mais if (i == strlen(str)) (avec les 2 '=')
    0
  8. lirey83 Messages postés 76 Statut Membre 13
     
    Salut,

    Si je comprends bien, tu souhaites avoir le squelette de ton programme. Dans ce cas, il devrait ressembler à un truc comme ça :
    bool estBinaire(char *chaine);
    void convert_hexa(char *bin, char *hex);
    
    int main()
    {
      char *chaine = "1000110011000001";
      char *hex;
    
      if (estBinaire(chaine))
      {
        convert_hexa(chaine,hex);
        cout << "Votre chaine : " << chaine << " vaut en hexa : "<< hex << endl;
      }
    }
    


    te reste à transcrire tes algos pour les fonctions ...
    0
  9. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    merci bcp pour tout vos reponse
    il te sert à koi char *chaine = "1000110011000001";
    char *hex;
    je comprend pas la
    0
  10. The Edge Messages postés 155 Statut Membre 21
     
    char *chaine = "1000110011000001";
    Cette instruction declare une chaine qui est totalement binaire afin de tester ta fonction.
    char *hex;
    c'est pareil, cette chaine devra contenir la version hexadecimal du nombre binaire.
    0
  11. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    ok
    mais ça
    tab-hexa [Lhexa] affecté de '\0'
    comment je fait pour le retranscrire
    a chaque foit ça me dit que tab-hexa n'est pas definit

    merci
    0
  12. The Edge Messages postés 155 Statut Membre 21
     
    Je comprend pas quand tu dis "tab-hexa [Lhexa] affecté de '\0' " ...
    0
  13. widi70 Messages postés 646 Date d'inscription   Statut Membre Dernière intervention   65
     
    ben enfaite Lhexa va etre retranscrite ds un tableau qui se finit par \0
    0
  14. lirey83 Messages postés 76 Statut Membre 13
     
    Salut

    Si tu nous montrais le code que tu as écrit pour retranscrire ton algo, on y verrait plus clair et on pourrait mieux t'aider ;)
    0