comparer deux string (chaîne de caractères)

Toinoobz
mer, 03/27/2019 - 14:19
Bonjour, je n'arrive pas a faire fonctionner ma comparaison de String.
voici le code avec juste une comparaison de char:
char carlu;
boolean depart;
boolean fin;
boolean indice;
void setup{
depart = false;
fin = false;
indice = false;
}
void lecture() {
Serial.println(carlu);
// si la donnée est "s"
if (carlu == 's') {
depart = true;
Serial.println("là");
}if (carlu == 'p') {
fin = true;
Serial.println("ici");
}if (carlu == 'h') {
indice = true;
Serial.println("ouf");
}
}void loop() {
if (Serial.available() > 0) { // on lit la données reçue (dans la variable "donnee")
carlu = Serial.read();
lecture();
}
}
J'aimerais pouvoir comparé des "char array" des mots plutôt que des lettres
Toinoobz
mer, 03/27/2019 - 15:38
Super, merci.
Je vais faire une explication à ma façon pour ceux que ça pourrait intéresser.
Walter
mer, 03/27/2019 - 23:17
L'opérateur > en C++ permet de savoir si la chaînes de gauche se trouve lexicalement après la chaînes de droite, soit baud > bad > add.
en général si tu as 3 if qui sont dépendant les uns des autres et exclusif, le mieux est d'utiliser des if else.
car comme ça tu n'execute pas des instructions inutile, car dans le pire des cas, tu fais évalué les 3 comparaisons alors que seulement la première aurait été nécessaire.
Quel est le problème avec ton programme ?
Walter
jeu, 03/28/2019 - 09:42
J'ai très bien lu ton post, par contre j'ai un doute sur le fait que tu en as fait de même avec le mien!
A quel moment ais je évoqué le fait qu'un 'if else' résolvait son problème?
Tu as raison, le bon terme doit être ordre lexicographique :), ce n'est pas vraiment un ordre alphabétique, l'espace ne faisant pas partie de l'alphabet, ainsi que les caractères graphique de ponctuation, je crois que c'est uniquement la valeur ascii du caractère graphique qui est utiliser dans la comparaison.
Un petit lien vers wikipédia, qui sera sûrement bien mieux expliquer que moi ce que je voulais dire :)
Ha ok, mais en quoi cela pause problème, son programme devrait ne rien afficher avec tout autre caractère que sph(en minuscule)?
Toinoobz
jeu, 03/28/2019 - 12:01
Merci Messieurs de toutes ces informations, Seul Manoé a eu le code initial avec tous ses défauts, mon problème était bien dans les filtres des caractères comparé. J'ai refait un code plus simple et plus lisible pour partager sur le forum. Mon problème est donc résolu! Merci "les-electroniciens"
Jetfuzz
jeu, 03/28/2019 - 13:34
Manoé, SPY , Brossden, enfin l'homme qui a plus de pseudo sur ce forum que de couilles .
Arrête de de vouloir jouer a qui a la plus grosse en permanence, c'est saoulant a la fin.
Franchement ferme la.
Jetfuzz
Walter
jeu, 03/28/2019 - 14:40
Je veux bien être gentil Manoé, mais c'est toi qui me donne des cours de français, de compréhension et qui essaye de me clasher, alors que tu n'a même pas pris le temps d'essayer de comprendre ce que j'ai écrit.
Donc je te le répète en quoi la phrase que tu as cité, exprime comment résoudre le bug!!!!!!
Franchement a pars d'être d'une mauvaise fois sans borne, je ne comprend pas, comment tu peut interpréter la phrase ci-dessous, comme la correction au problème de Toinoobz, problème que je ne connais pas d'ailleurs
Donc je le répète aussi, en général il est préférable (soit une bonne pratique, de l'optimisation) de ne pas utiliser 3 if exclusif, mais plutôt de les chaîner, car cela évite(perde du temps CPU) d'évaluer 3 conditions alors, que la première aurait pu suffire.
Oui c'est bien "if else", "if (condition) instruction1 else instruction2", instruction2 pouvant lui même être une structure de contrôle "if else".
Par contre je te rassure de suite, ça me dérange pas si tu as la plus grosse, moi tant que j'arrive à m'amuser avec le mienne ca me suffit ;)
Par contre si tu pouvais t'abstenir de gâcher mon plaisir avec des conneries, ca m'arrangerais merci.
Walter
jeu, 03/28/2019 - 18:23
Quel est le rapport!!!
je ne sais pas quelle sont tes relations avec SPY, mais comme on lui as déjà dis, on n'a rien à prouver et il ne s'agit absolument pas de savoir si on est meilleurs électroniciens ou programmeur que toi.
Simplement qu'avant de vanner et de prendre les gens de hauts, peut être pourrait tu au moins lire et essayer de comprendre ce que les gens ont voulu dire.
C'est dommage que tu n'es pas l'honnêteté d'admettre que tu t'es planté, ca nous arrive à tous quelques soit notre niveau, c'est pas bien grave.
Bisous.
Jetfuzz
ven, 03/29/2019 - 08:19
Mais je rêve la !!!!!
Hé, on est sur un forum, PAS TON FORUM, alors s'il te plait, comme déjà expliqué a ton géniteur, Ici ce n'est pas une autocratie.
Donc ce genre de reflexion tu te les gardes bien au fond de ton ......
Cordialement
Jetfuzz
Walter
jeu, 03/28/2019 - 21:54
Ok, tu as rien compris à ce que je t'ai dis, en fait.
Je ramène ma fraise parce Toinoobz pose une question sur l'opérateur > et que ta réponse ne lui explique pas pourquoi cet opérateur, peut être utilisé dans ce cas!
J'ai du mal à voir ce qu'il y a de mal.
J'en profite pour lui donner un conseil de développement, car à priori c'est un "débutant" en programmation et autant prendre rapidement de bonne pratique.
Après il en fait ce qu'il en veut.
Pourquoi veux tu t'excuser d'avoir une profession, quel est le rapport avec notre sujet?
Je ne comprend pas pourquoi tu pars sur tes grand chevaux et t'énerve ainsi, comme tu le dis cela a somme toute peu d'importance.
Jetfuzz
ven, 03/29/2019 - 08:14
Walter.
Exactement.
(manoé,spy, brosdeen) te crache un code, c'est moi qui l'ai fait, tu prends ca marche.
Moi comme déjà évoqué ne demande qu'a comprendre, et effectivement les string c'est compliqué, sans jeu de mot.
Donc oui son code fonctionne, mais pourquoi !!!!!
et Walter arrive avec les explications du pourquoi et du comment, et la , tu te dit "mais oui , j'ai compris le truc"
ET donc "MERCI", pas la peine de faire un long discours. On veux juste comprendre point barre.
Jetfuzz
pour finir
Je récapitule, au commencement, il y avait Brossden, qui a engendré SPY, qui lui même a engendré Manoé. qui bientôt va disparaître pour engendrer ..........
"To be continued"
Walter
ven, 03/29/2019 - 08:50
;) Jetfuzz
Manoé il n'y a pas d'organisation de code ou quelque chose de spécial ou extraordinnaire.
Si tu as le code suivant :
monCar = lecture();
if (monCar == 'd') {
...
}
if (monCar == 'm') {
...
}
if (monCar == 'f') {
...
}
Donc un seul des 'if' va matcher la condition
Normalement cela s'écrit plutôt ainsi:
if (monCar == 'd') {
...
} else if (monCar == 'm') {
...
} else if (monCar == 'f') {
...
} else {
}
Voir si comme là tu as un nombre avec un switch
switch(monCar) {
case 'd' :
...
break;
case 'm' :
...
break;
case 'f' :
...
break;
default:
...
}
si monCar vaut par exemple 'd', alors les conditions "monCar == 'm'" et "monCar == 'f'", ne seront pas évaluées.
Ici cela a que peut d'impacte 1 comparaison au lieu de 3, l'optimisation est infime, mais si au lieu d'une simple comparaison tu avait un appel de fonction du genre analyseDechaine(maChaine), avec par exemple isPalindrom(maChaine), isReverse(maChaine), nbSyllable(maChaine), il est inutile d'appeler du code qui ne sert pas.
Un "return" dans chaque block des "if" peut aussi très bien faire l'affaire suivant les cas.
C'est simplement des bonnes pratiques, cela optimise ton code, le rend plus visible, après cela ne te résolve pas un bug en soit.
Si Toinoobz suit mon conseil, c'est bien (enfin je pense :) ), mais cela sera bien moins important que de résoudre son bug comme tu l'a fait.
Après il n'a pas donné son code initial bugué, mais un code d'exemple vite fait a priori sans réel bug!!!
Jetfuzz
ven, 03/29/2019 - 10:20
C'est bien ce que tu es entrain de faire, comme a ton habitude, polluer les post pour prouver que tu as raison.
et une fois que tu a bien foutu le souk, tu supprimes tout tes post, pour rendre le forum encore plus incompréhensible.
et tout ca en bafouant toutes les règles du forum....
ca vous rappelle rien !!!
cordialement JetfuZZ
Walter
ven, 03/29/2019 - 10:31
+1
Walter
ven, 03/29/2019 - 10:14
C'est quoi une "bugne"?
Il y a combien de if et combien de else ?
Ou tu vois que l'on passe par tout les tests?
Oui j'utilise bien des "if else" dans les instructions du else précédent, comme toi, puisque c'est que je dis depuis le début!!!
Dis moi tu fais exprès de ne pas comprendre ?
Ha on retrouve les mêmes arguments que SPY, si tu le connais ou tu as un moyen de communiquer avec lui, je crois que j'avais réussis après mainte échange à lui faire admettre que je savais de quoi je parlais.
Pour reprendre ton langage, je suis aussi désolé, mais c'est une réalité tu fais exprès pour foutre la merde de ne pas comprendre.
Pour preuve à priori tu n'es pas un débutant et tu continue, a faire semblant de mal interpréter mes propos sur un truc ultra basique, qui ne mérite pas tant de blabla.
Pour faire comme toi, de la provoque et le nigaud de service, si tu pense qu'il est plus intéressant de faire 3 if sans else, c'est une réalité tu es un "bugne"
Dis moi tu développe en Windev non ?
Walter
ven, 03/29/2019 - 12:57
Tu es rigolo toi,
D'ou ce que tu cite:
Ca me fais plaisir que tu me trouve incroyable, surtout que je ne t'ai jamais demandé de t'execuser!!!
Lit tu vraiment les posts des autres?
A priori tu n'a pas compris ce que j'ai voulut dire dans mon premier post et tu utilise cette mauvaise compréhension pour essayer de me vanner, ca t'étonne que j'essaye de me défendre ?
Je veux bien avoir tort, mais peu tu seulement exprimer en quoi jai tort???
Walter
ven, 03/29/2019 - 13:53
Encore une réponse dans le vide à la SPY, en fait tu es pris à ton propre jeu et tu ne sais pas me répondre?
Je ne vois au contraire qu'une invention, je suis obligé que tu me fasse voir les choses en faces!
Walter
ven, 03/29/2019 - 14:07
Cet remarque prouve bien que tu lis les posts à moitiés, Jetfuzz n'a absolument pas dit que tu avais supprimé des posts, mais que SPI l'avait fait!!!
Peut tu nous dire pour qui on prend les gens?
J'attends toujours ton explication sur mes torts et les conneries que je raconte!
Walter
ven, 03/29/2019 - 18:33
Un pacs, quel idée saugrenue, quel est le rapport, cela ce veut il insultant ou désobligeant ?
C'est étonnant mais ta réaction est exactement ce qu'avait prédit Jetfuzz :)
C'est tellement plus facile de se dérober que de devoir ce justifier, après avoir fait le caid!
Mais finalement c'est sûrement ta façon de reconnaître tes tort.