Pages: [1]   Go Down
Author Topic: [RESOLU]Isoler chiffre d'un nombre dans une variable?  (Read 1098 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir  à tous,

Je cherche comment faire pour isoler un chiffre qui se trouve dans une variable, je m'explique;
si j'ai par exemple
int test = 15;

j'aimerai recuperer dans un tableau le 1 et le 5 separement.

Merci
« Last Edit: February 15, 2012, 08:43:18 pm by Serialkliker » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

Je cherche comment faire pour isoler un chiffre qui se trouve dans une variable, je m'explique;
si j'ai par exemple
int test = 15;

j'aimerai recuperer dans un tableau le 1 et le 5 separement.
Sous forme de char[]ou de int[] ?

tableau de char :
Code:
int test = 15;
char str[5];
sprintf(str, "%d", test);
// str => {'1', '5', '\0', x, x}

tableau de int :
Code:
int test = 15;
int tab[3];
tab[0] = test % 10;
tab[1] = test / 10;
tab[2] = test / 100;
// tab => {unités, dizaines, centaines}
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sa marche, merci beaucoup
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai juste une question supplementaire sur ce que tu m'a mis tout à l'heure :
Code:
sprintf(str, "%d", test);
Je vois souvent sur des bouts de code sur internet "%02d" ou bien comme tu vient de me mettre mais à quoi sa sert exactement et comment ça s'appelle. Merci
Logged

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Quote
%d

Il s'agit de formatage des données de sortie (printf). En l'occurence, %d pour décimale, %02d pour decimale à deux chiffres, %s pour un string, on peut aussi positionner un point pour les chiffres aprés la virgule : %.02d, etc.

Par contre, itoa est certes moins pratique mais cependant moins gourmand que sprintf.

Ecrit rapidement :

Version itoa : 2436 bytes
Code:
int value[5] = {15, 125, 1325, 14325, 104325 };
char buff[12];


void setup() {
  Serial.begin(19200);
  delay(1000);
}

void loop() {
  
  for (int i = 0; i < 5; i++) {
    int taille = strlen(itoa(value[i], buff, 10));
    char * data = itoa(value[i], buff, 10);
    Serial.println(data);
    for (int j = 0; j < taille; j++) {
      Serial.println(data[j]);
      delay(500);
    }
    Serial.println("Next number");
  }
}

Version sprintf : 3744 bytes
Code:
int value[5] = {15, 125, 1325, 14325, 104325 };
char buff[12];

void setup() {
  Serial.begin(19200);
  delay(1000);
}

void loop() {
  
  for (int i = 0; i < 5; i++) {
    sprintf(buff, "%d", value[i]);
    for (int j = 0; j < 12; j++) {
      Serial.println(buff[j]);
      delay(500);
    }
    Serial.println("Next number");
  }
}

EDIT1 : http://www.arduino.cc/playground/Code/PrintingNumbers

@+

Zoroastre.
« Last Edit: February 15, 2012, 03:52:22 pm by zoroastre » Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Par contre, itoa est certes moins pratique mais cependant moins gourmand que sprintf.
itoa c'est sympa, mais itoa ne déclenche pas un warning lors de la compilation en cas d'erreur de format <> type de variable smiley-wink
C'est comme pour atoi et sscanf (qui font l'inverse, string -> nombre), atoi est plus léger mais il est impossible de faire la différence entre une erreur (= -1) et le nombre -1 smiley-wink

La légèreté ou la "sécurité" (grosse guillemets) mais pas les deux smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 29
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup pour vos explications, c'est beaucoup plus clair maintenant :-)
Logged

Pages: [1]   Go Up
Jump to: