problème de boucle 'for'

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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);

}

`

Édité par tricotin

+0 -0

Je rajouterais qu’en mettant un retour à la ligne après les ; tu gagnerais encore plus en lisibilité. ;)

Edit : Et pense à entourer ton code des signes ``` pour qu’il soit plus lisible sur les forums. ;)

Édité par FougereBle

Ku Wenja warhata? U miha Wenja warha!

+0 -0
Auteur du sujet

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

Édité par tricotin

+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. ;)

Ku Wenja warhata? U miha Wenja warha!

+0 -0
Auteur du sujet

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()

{ 
}

`

Édité par tricotin

+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]);
}

Édité par FougereBle

Ku Wenja warhata? U miha Wenja warha!

+0 -0
Auteur du sujet

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.

+0 -0

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. ;)

Ku Wenja warhata? U miha Wenja warha!

+0 -0
Auteur du sujet

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

+0 -0
Auteur du sujet

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

Édité par tricotin

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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