Bonsoir,
ça fait 4h que je penche sur un exercice. J'en peux plus les amis!!!
Exo : afficher les multiples de d1 non multiple de d2 sur un intervalle [a,b]
ex : d1 = 3 d2 = 2 [4,30]
réponse : 9, 15, 21, 27
Bonsoir,
ça fait 4h que je penche sur un exercice. J'en peux plus les amis!!!
Exo : afficher les multiples de d1 non multiple de d2 sur un intervalle [a,b]
ex : d1 = 3 d2 = 2 [4,30]
réponse : 9, 15, 21, 27
Montres nous tout de même un début de code qu'on puisse voir la réflexion que t'as concernant le problème...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je n'ai pas de code mais j'ai des supposition,
si d1 et d2 sont(pair et impaire) alors il suffit donc d'afficher les multiples impaire de d1
si d1 et d2 sont (paire et paire) c'est plus compliquer.
Je pensais à faire une boucle for
Tout d'abord je calcule les multiples
Ce qui me pose problème c'est le code qu'il faut mettre pour avoir les multiples de d1 non multiple de d2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for(i = 0; d1 * n <= 100; m++) { printf("%d\n", n * d1); } for(i = 0; d2 * n <= 100; m++) { printf("%d\n", n * d2); }
C'est quoi la difficulté
Ou alors je n'ai pas compris l'énoncé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 tmp_int: entier list_multiples: tableau d'entiers tmp_int = d1; tant que (tmp_int <= borne_min) faire tmp_int = (tmp_int + d1) fin tant que tant que (tmp_int <= borne_max) faire si ((tmp_int % d2) != 0) faire // Modulo list_multiples.ajouter(tmp_int); fin si tmp_int = (tmp_int + d1) fin tant que
Merci pour ta réponse.
En fait j'aimerais afficher le résultat dans une fonction sans utiliser de tableaux
Je n'arrive pas à faire en sorte de"afficher les multiples de d1 non multiples de d2"
Je sais afficher les multiples de 2 nombres certes mais combiner avec la condition du non multiple je galère
what ???si d1 et d2 sont(pair et impaire) alors il suffit donc d'afficher les multiples impaire de d1
si d1 et d2 sont (paire et paire) c'est plus compliquer.
d1 et d2 représente chacun un entier, en l'occurrence dans ton cas, 3 et 2...
Ton énoncé demande donc sur un ensemble d'entiers entre 4 et 30 de renvoyer tous les éléments multiples de 3 mais non multiples de 2.
Est-ce plus clair pour toi ?
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Oui c'est clair, je comprend parfaitement l'exercice mais je n'arrive pas du tout à coder, depuis 16h je fais des exo mais celui la me rend fou
En 4h ne pas sortir un minimum de code, ça paraît tout de même surprenant,
En 5 lignes c'est bâclé !
La condition est simple pourtant
Fait un petit effort !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (n%3 == 0 && n%2 != 0) /* suite du code */
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je travail vraiment, j'ai même des feuilles de brouillons pleins de code si tu veux des preuves lol
Dans mon printf final comment puis-je isoler les valeurs qui m'intéressent d'une manière générale ?
Bonjour,
Fred1599 t'a donné la solution, en réalité : l'opérateur « % » est l'opérateur « modulo », c'est-à-dire celui qui te donne le reste de la division. Et les multiples d'un nombre n sont les nombres qui peuvent être divisés par n en conservant un reste nul. De là, tu écris une boucle for, utilisant un indice i, et qui compte de a à b. À chaque tour, tu vérifies si « modulo d1 » est nul et « modulo d2 » est non nul. Si les deux conditions sont vérifiées en même temps, tu écris la valeur de i à l'écran.
Bonjour,
J'ai essayer de faire cela mais en message j'ai Exception en point flottant (core dumped)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <stdio.h> int main () { int d1=3,d2=2, i; for(i=0; 5<i<=31; i++) { if (d1%i == 0 && d2%i != 0) { printf("%d\n", i); } } return 0; }
J'espère que le code est assez claire mais si ta des question je suis entièrement disposer a répondre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <stdio.h> main() { int d1 =3,d2 =2,a=4,b=30,i; /* [a,b] */ for(i = a; i<=b ;i++ ) { if(i%d1==0) {if(i%d2!=0) printf("%d;",i); } } }
Il faut revoir le cours sur la boucle for...
#include <stdio.h>
main()
{
int d1 =3,d2 =2,a=4,b=30,i; /* [a,b] */
for(i = a; i<=b ;i++ )
{ if(i%d1==0)
{if(i%d2!=0)
printf("%d;",i);
}
}
}
- Code trop compact
- Imbrication des conditions if
- Pas d'indication sur le type de retour (voir norme)
- Indentation mal choisie
Tout cela n'aide pas au débutant, donne de mauvaises habitudes et rend le code difficile à lire... Et en plus tu lui donnes la réponse ! La totale.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Je ne comprend pas la différence entre if (i%d1 == 0 && i%d2 != 0) et if(d1%i==0 && d2%i==0);
je sais que a modulo b c'est a = bq+r
d1 = iq+r
d2 = iq'+r
et
i = qd1+r si r = 0 i = qd1
i = q'd2r si r = 0 i = q'd2
Merci pour vos aide c'est super sympa, j'essaye de faire vos code sur un papier pour comprendre la mécanique
1) & 2) je l'accepte je pouvais3) l’énoncer dit de me stocker les valeur dans un tableau ce qui veut dire que c'est l'affichage qui est demander
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ((i%d1 == 0 )&& (i%d2 != 0))
4)c'est un chois libre
J'ai parlé de norme, il n'y a pas le choix, la fonction main renvoie en général un code (0) permettant d'exprimer la bonne fonctionnalité du programme.3) l’énoncer dit de me stocker les valeur dans un tableau ce qui veut dire que c'est l'affichage qui est demander
Utilise l'option -Wall de ton compilateur...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Après avoir entrer mes diviseurs d1 et d2 mon programme n'affiche pas les multiples de d1 non multiples de d2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #include <stdio.h> void bornes(int *a, int *b) { printf("Fournir un enter a ? "); scanf("%d", a); do { printf("Fournir un entier b > %d ", *a); scanf("%d", b); } while(*b<=*a); printf("\n"); } int lire_diviseur(int a, int b) { int c; do { printf("Fournir un entier d1 <= %d\n", b); scanf(" %d", &c); } while(c>b); do { printf("Fournir un entier d2 <= %d\n", b); scanf(" %d", &c); } while(c>b); return c; } void affiche_multiples(int a, int b, int d1, int d2) { int i; for(i=a; i<b; i++) { if (i%d1 == 0 && i%d2 != 0) { printf("%d ", i); } } } int main () { int a=0,b=0,d1=0,d2=0; bornes(&a,&b); d1 = lire_diviseur(a,b); d2 = lire_diviseur(a,b); affiche_multiples(a,b,d1,d2); return 0; }
J'ai un problème d'affichage, lorsque j'entre d1, d1 est bien mis dans la variable d1 et mon main.
Puis lorsque j'entre d2, j'ai toujours " printf("Fournir un entier d1 <= %d\n", b);" j'aimerais remplacer d1 par d2 mais je n'y arrive pas
Voici une ptit MAJ du programme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 #include <stdio.h> void bornes(int *a, int *b) { printf("Fournir un enter a ? "); scanf("%d", a); do { printf("Fournir un entier b > %d ", *a); scanf("%d", b); } while(*b<=*a); printf("\n"); } int lire_diviseur(int b) { int c; do { if(b>0) { printf("Fournir un entier d1 <= %d\n", b); scanf(" %d", &c); } else { printf("Fournir un entier d2 <= %d\n", b); scanf(" %d", &c); } } while(c>b); return c; } void affiche_multiples(int a, int b, int d1, int d2) { int i; for(i=a; i<=b; i++) { if (i%d1 == 0 && i%d2 != 0) { printf("%d ", i); } } } int main () { int a=0,b=0,d1=0,d2=0; bornes(&a,&b); d1 = lire_diviseur(b); d2 = lire_diviseur(b); printf("Les multiples de %d non multiples de %d compris entre %d et %d sont : \n", d1,d2,a,b); affiche_multiples(a,b,d1,d2); return 0; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager