problème de boucle 'for'

Le problème exposé dans ce sujet a été résolu.

bonjour j’ai écrit ce sketch arduino et je voudrais savoir si il serais possible d’utiliser une boucle ’for’ pour le rendre plus simple merci d’avance

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
int result;

int result1;

int result2;

int long tabDurees[] = {52000,40000,3000,250}; 

void setup()

{ 

Serial.begin(9600);

}

void loop()

{ 

{ 

result = tabDurees[0]  - tabDurees[1]  ; 

result1 = (result  - tabDurees[2] ) ; 

result2 = (result1  - tabDurees[3] ) ; 

Serial.println (result)  ;

Serial.println (result1)  ;

Serial.println (result2)  ;

} 

while(1);

}

`
+0 -0

merci pour votre réponse mais si le code doit contenir 100 valeur alors je pense qu’il serai util de simplifier avec une boucle for

’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
int result;

int result1;

int result2;


int long tabDurees[] = {52000,40000,3000,250}; 

void setup()

{ 



Serial.begin(9600);

}

void loop()

{ 










result = tabDurees[0]  - tabDurees[1]  ;

result1 = (result  - tabDurees[2] ) ; 

result2 = (result1  - tabDurees[3] ) ; 


Serial.println (result)  ;

Serial.println (result1)  ;

Serial.println (result2)  ;




 while(1);

}

`

’’’’’’’’’’’’’’’’’’’’’’’’’’’’’

le résulta doit être

12000

9000

8750

merci d’avance

+0 -0
1
2
3
4
5
6
7
8
int arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int results[10];

results[0] = arr[0] - arr[1];

for (int i = 2; i < length(arr); i++) {
    results[i - 1] = results[i - 2] - arr[i];
}

Bon, c’est un code à moitié valide (je doute qu’une fonction length existe et que l’on puisse modifier un tableau comme je l’ai fait), mais voilà l’idée.

A noter qu’il y à certainement une meilleur façon de faire. ;)

+0 -0

maintenant je voudrais soustraire des valeurs les une après les autres et les afficher dans le moniteur exemple

5200 - 4000 = 1200

4000 - 300 = 3750

300 - 250 = 50

j’y arrive avec ce scketch mais j’aimerais faire plus simple avec une boucle


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int R;

int long T[] = {5200,4000,3000,250 }; 

void setup()

{ 

Serial.begin(9600);

  R = T[0] - T[1];

  Serial.println(R); 

  R = T[1] - T[2];

  Serial.println(R);

  R = T[2] - T[3];

  Serial.println(R);


}

void loop()

{ 
}

`

+0 -0

Tu reprend le code que je t’es donné mais en rajoutant l’affichage avec Serial.println.

Par contre, essaye de mettre ton code dans les balises code avec ```.

Edit : En fait il faut modifier un peut le code :

1
2
3
4
5
int arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};

for (int i = 0; i < length(arr) - 1; i++) {
    Serial.println(arr[i] - arr[i + 1]);
}
+0 -0

en fait ca marche pas

1
2
3
4
5
6
7
int arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};

for (int i = 0; i < length(arr) - 1; i++) {
    Serial.println(arr[i] - arr[i + 1]);
}

`

Arduino : 1.6.0 (Mac OS X), Carte : "Arduino Uno"

sketch_dec29e.ino:1:41: error: scalar object ’arr’ requires one element in initializer

sketch_dec29e.ino:3:1: error: expected unqualified-id before ’for’

sketch_dec29e.ino:3:17: error: ’i’ does not name a type

sketch_dec29e.ino:3:38: error: ’i’ does not name a type

Erreur lors de la compilation.

J’ai sans doute dû oublier les [] dans la variable arr.

Mais sinon, je vais peut être paraître un peu méchant, mais j’ai l’impression que tu ne cherche pas à comprend d’où peut venir le problème, mais que tu ne te prend pas la tête et tu viens demander de l’aide dès que tu as le moindre problème.

C’est peut être faux, mais c’est l’impression que j’ai. ;)

+0 -0

mais non c’est juste parce que je débute et je ne comprend pas tout

je fais cet exercices pour essayé de comprendre les boucles ’for’

Le premier problème est résolut avec ce sketch

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int result;

int long tabDurees[] = {52000,40000,3000,250}; 

void setup()

{ 
Serial.begin(9600);



result = tabDurees[0]; 

for (int i = 1; i < 4; i++)

{result -= tabDurees[i];

Serial.println (result)  ;


}


}

void loop()

{    


}

mais pour le second je sèche un peu

Le premier consistait à prendre les 4 valeurs et à faire ceci

5200-4000=1200

1200-300=900

900-250=650

Le deuxième consiste à prendre les 4 valeurs et à faire ceci

5200-4000=1200

4000-300=3700

300-250=50

c’est la toute la difference et je n’arrive pas à faire plus simple avec une boucle

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte