Pb de fonction

widi70 Messages postés 679 Statut Membre -  
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
A voir également:

13 réponses

_goni Messages postés 964 Statut Membre 38
 
Salut,
Pour cela il faut aussi savoir dans quel langage tu dois développer.
0
widi70 Messages postés 679 Statut Membre 65
 
il faut que je le fasse en C++
0
_goni Messages postés 964 Statut Membre 38
 
désolé mais la dessus je ne peux pas t'aider alors. Désolé
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
widi70 Messages postés 679 Statut Membre 65
 
merci bcp pour tout vos reponse
il te sert à koi char *chaine = "1000110011000001";
char *hex;
je comprend pas la
0
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
widi70 Messages postés 679 Statut Membre 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
The Edge Messages postés 155 Statut Membre 21
 
Je comprend pas quand tu dis "tab-hexa [Lhexa] affecté de '\0' " ...
0
widi70 Messages postés 679 Statut Membre 65
 
ben enfaite Lhexa va etre retranscrite ds un tableau qui se finit par \0
0
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