Go Down

Topic: Simple addition d'une chaîne de caractère avec un string (Read 4700 times) previous topic - next topic

2325

Bonjour à tous

J'ai une simple question si vous pouviez m'aider cela sera très gentil de votre part .

Voici don ma question : J'ai de chaîne de caractère en string comme celles-ci :

  char Str1[5] = {'1' , '2' , '3' , '4'} ;
  char Str2[5] = {'5' , '6' , '7' , '8'} ;

Ma question est juste : Comment faire additionner que seulement deux nombres précis ?
Comme par exemple faire 2 (du string 1 )    +    7 (du string 2)

J'espère que j'ai été clair.
Merci d'avance.
Bonne soirée à tous et à toutes.


koala

Salut,

Pour selectionner ton 2 : Str1[1]
Pour selectionner ton 7 : Str2[2]

Pour les additioner il faut d'abord les convertir en entier car ton tableau contient des caractères

http://arduino.cc/en/Reference/IntCast
ou peut être :
http://www.cplusplus.com/reference/cstdlib/atoi/

B@tto

1) Faudrait peut-être arrêter de multiplier les topics
2) Faudrait commencer par les bases : http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation/les-tableaux-9
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

2325

Ok merci à vous deux du coup de main vous m'avez vachement aider.   :)

2325

Et une dernière question svp si l'on veut sélectionner toute la chaîne en même temps comment on fait ?

Merci de votre réponse.

fdufnews


Et une dernière question svp si l'on veut sélectionner toute la chaîne en même temps comment on fait ?

En l'état on ne peut pas car la chaîne est mal définie.
Une chaîne doit posséder un terminateur pour cela 2 moyens
Code: [Select]
  char Str1[5] = {'1' , '2' , '3' , '4',0} ;
  char Str2[5] = {'5' , '6' , '7' , '8',0} ;

ou alors (plus simple)
Code: [Select]
  char Str1[5] = {"1234"} ;
  char Str2[5] = {"5678"} ;

Une fois définie correctement tu manipules la chaîne en utilisant son pointeur.
Code: [Select]
Serial.print(Str1); // imprime Str1 à la console
Str1 =strcat(Str1,Str2); // concatène les 2 chaînes dans la première


Mais tu ferais bien de lire les docs que B@tto t'a suggérés.


nulentout

Bonjour les copains,
Multiplier les posts pour poser toujours les mêmes questions ... mais je crois que c'est la finalité d'un forum.
Avant de devenir un spécialiste qui posera des questions pointues ou aidera les copains, il faut commencer.
Oui, toute la documentation sur Arduino est géniale, mais ... écrasante pour un débutant.
A mon sens, je crois logique d'avoir éternellement à répéter les mêmes "banalités" pour donner un coup de pouce aux naïfs, (A prendre au sens noble de ce terme) forcément il en résultera du positif.
J'ai déjà posé plusieurs questions sur ce forum, et Dieu sait à quel point j'y ai trouvé des réponses précieuses. Merci à tous. Un lien vers la bonne explication est une aide précieuse, encore faut-il avoir le temps de décortiquer du verbiage technique écrasant pour qui n'a pas des heures d'expérience. L'école ... c'est fait pour ça.
Personnellement, ce qui m'a toujours aidé le plus efficacement ce sont les réponses du genre :
Voici un programme qui devrait correspondre à ce que tu cherches à faire. Voilà un lien sur lequel tu auras les développements.
Dans cet ordre d'idée, je peux proposer le programme suivant :
Code: [Select]
/* petit programme pour tester la transformation caractère vers chiffre */

// variables du programme.
  int NUM, VAL;
  char Str1[5] = {'1' , '2' , '3' , '4'} ;
  char Str2[5] = {'5' , '6' , '7' , '8'} ;

void setup() { Serial.begin(115200); }

void loop() {
  NUM = int(Str1[0]); // Transforme le CHIFFRE en nombre codé ASCII.
  NUM = NUM - 48; // Transforme le code ASCII en chiffre NUMERIQUE.
  Serial.print("Str1[1] = "); Serial.println(NUM);
  VAL = int(Str2[3])-48; // Transforme directement en chiffre numérique.
  Serial.print("Str2[2] = "); Serial.println(VAL);
  Serial.print("Somme = "); Serial.println(NUM + VAL);
  INFINI: goto INFINI;

Il convertit le premier caractère de la première chaîne en un nombre équivalent au chiffre,
il convertit le dernier caractère de la deuxième chaîne en un nombre équivalent au chiffre,
il effectue l'addition pour bien montrer que les entités sont devenus des valeurs calculables.

Je ne suis pas du tout spécialiste dans ces transformations, il y a certainement plus élégant. Mais pour une première approche ça me semble déjà crédible.
ATTENTION au vocabulaire :
Chiffre est l'un des 10 caractères particuliers de notre alphabet pour traduire des nombres. C'est juste un "tortillon" que l'on scribouille avec une plume où une imprimante. (Chiffre par opposition à lettre par exemple)
Ce chiffre est codé par convention avec des "0" et des "1" dans le µP. La combinaison adoptée pour ce codage est ici un standard noté ASCII. Il existe bien d'autres codages possibles comme BAUDOT ou EBCDIC ...
"équivalent au chiffre" devient un nombre correspondant au chiffre est permettant d'effectuer des traitements numériques.

Je souhaite par ce post avoir aidé notre débutant, et souligne au passage que parmi les plus grosses difficultés que je rencontre avec le langage C d'Arduino, il y a les conversions de type.
Amicalement : Nulentout


tricotin94


Go Up