Pb de fonction
widi70
Messages postés
679
Statut
Membre
-
lirey83 Messages postés 76 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
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:
- Pb de fonction
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction cachée google chrome - Guide
13 réponses
Bon, pour la premiere fonction voici un exemple en C qui doit etre a peu pret pareil qu'en C++ :
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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> }
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 '=')
#include <string.h>
juste apres #define FALSE 0
et c'est pas => if (i = strlen(str))
mais if (i == strlen(str)) (avec les 2 '=')
Salut,
Si je comprends bien, tu souhaites avoir le squelette de ton programme. Dans ce cas, il devrait ressembler à un truc comme ça :
te reste à transcrire tes algos pour les fonctions ...
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 ...
merci bcp pour tout vos reponse
il te sert à koi char *chaine = "1000110011000001";
char *hex;
je comprend pas la
il te sert à koi char *chaine = "1000110011000001";
char *hex;
je comprend pas la
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.
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.
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
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