Bonjour , existe t'il une fonction qui fait un ou exclusif entre 2 chaines de caractères composées uniquement de 0 et 1?
Je pense qu'il faut d'abord convertir la chaine de caractères en nombres mais après?
Merci
Bonjour , existe t'il une fonction qui fait un ou exclusif entre 2 chaines de caractères composées uniquement de 0 et 1?
Je pense qu'il faut d'abord convertir la chaine de caractères en nombres mais après?
Merci
l'opérateur ^ permet de faire un ou exclusif.
Petit rappel
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
Pour convertir ta chaine tu peux utiliser strtol par exemple
Non il faut l'ecrire soi-même.
Tu veux dire que tes chaînes ne sont composées que de '0' et '1' bien sur...
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Je pense que la question de psgman113 c'est plutôt quelque chose du genre :
Le moyen le plus simple reste de recréer cette fonction xor pour les chaines de caractère. Car convertir en nombre, utiliser le xor "natif" et reconvertir en chaine serait beaucoup plus long et poserait des problèmes par rapport à la longueur des chaines de caractère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char a[] = "01101"; char b[] = "01010"; // faire quelque chose sur a et b pour obtenir la chaine de caratère "00111"
je suis pas certain que ce soit beaucoup plus long que de faire un gros if//else ...Envoyé par Celelibi
attention, ce code n'est pas portable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char a[] = "01101"; char b[] = "01010"; char c[6]; int i; for (i = 0; i < strlen (a); i++) { c[i] = (a[i] - '0') ^ (b[i] - '0') + '0'; } c[i] = NULL; printf ("%s\n", c); return 0; }![]()
Pas de problème de longueur si on prend les caractères un par un... et on doit pouvoir s'en sortir en jouans du masquage... mais un if sera tout aussi efficace je pense ...
Envoyé par Emmanuel Delahaye
Il parle de chaînes de caractères par d'entiers.Envoyé par psgman113
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Envoyé par Trap D
Ben après, ^.Envoyé par P.O.
Donc il faut écrire la fonction qui
CQFD
- transforme les chaînes en entiers
- calcule le ^ des deux nombres
![]()
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Comme l'indique ton livre de C, (K&R2, pages 48 et 207) XOR est ^ en C.Envoyé par psgman113
Partager