[C] Problème avec une sorte de boucle.
Fermé
L'Etudiant
-
14 janv. 2006 à 23:11
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 16 janv. 2006 à 20:03
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 16 janv. 2006 à 20:03
A voir également:
- [C] Problème avec une sorte de boucle.
- Boucle cmd - Forum Programmation
- Aucun son ne sort de mon pc - Guide
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
11 réponses
Ah oui, excusez-moi, par exemple, si l'on entre l'entier 14, le programme nous affiche 3 ; 6 ; 9 ; 12.
Si l'on entre 20 : 3 ; 6 ; 9 ; 12 ; 15 ; 18.
Etc ...
Donc j'aimerais bien savoir comment on peut faire en sorte que ça fasse ça ;)
Merci de votre aide :)
Si l'on entre 20 : 3 ; 6 ; 9 ; 12 ; 15 ; 18.
Etc ...
Donc j'aimerais bien savoir comment on peut faire en sorte que ça fasse ça ;)
Merci de votre aide :)
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
15 janv. 2006 à 18:01
15 janv. 2006 à 18:01
salut
si on veut bien t'aider mais y nous faut ton numéro de carte bleue tu comprends bien : )
Plus sérieusement il suffit de faire une boucle for, qui ira de i=0 à i=à l'entier entré.Cela nous donne donc la boucle suivante :
for(int i=0;i<n;i++)
{
}
Ensuite dans cette boucle on veut sélectionner les différentes valeurs de i qui sont multiples de 3, et donc qui donnent un reste de division par 3 nul. Par exemple en faisait m=n%2, on aura dans la variable m le reste de la division de n par 2. Si ce reste est nul, n est donc un multiple de 2; si n=1, alors n n'est pas multiple de 2. Donc ca fera un boucle comme ca :
int m;
for(int i=0;i<n;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
Voila j'espère que ca répond a ta question si ca marche pas revient, je me pencherais plus sur le problème.
si on veut bien t'aider mais y nous faut ton numéro de carte bleue tu comprends bien : )
Plus sérieusement il suffit de faire une boucle for, qui ira de i=0 à i=à l'entier entré.Cela nous donne donc la boucle suivante :
for(int i=0;i<n;i++)
{
}
Ensuite dans cette boucle on veut sélectionner les différentes valeurs de i qui sont multiples de 3, et donc qui donnent un reste de division par 3 nul. Par exemple en faisait m=n%2, on aura dans la variable m le reste de la division de n par 2. Si ce reste est nul, n est donc un multiple de 2; si n=1, alors n n'est pas multiple de 2. Donc ca fera un boucle comme ca :
int m;
for(int i=0;i<n;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
Voila j'espère que ca répond a ta question si ca marche pas revient, je me pencherais plus sur le problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors mon numéro de carte bleue, c'est ... euh ... arf mais je n'ai pas de carte bleue !!! Désolé ^^
Pour ce que vous m'avez proposé, c'est génial, mais je ne comprend rien ^^
Je vais étudier ce que vous m'avez écrit et tenter de comprendre ;)
Par contre, le seul problème, c'est que, quand par exemple, j'entre l'entier quinze, il me met tout jusqu'à douze, mais pas quinze compris (alors que 15 est divisible par 3.
Comment faire pour faire en sorte qu'il compte 15 ?
En vous remerciant.
Pour ce que vous m'avez proposé, c'est génial, mais je ne comprend rien ^^
Je vais étudier ce que vous m'avez écrit et tenter de comprendre ;)
Par contre, le seul problème, c'est que, quand par exemple, j'entre l'entier quinze, il me met tout jusqu'à douze, mais pas quinze compris (alors que 15 est divisible par 3.
Comment faire pour faire en sorte qu'il compte 15 ?
En vous remerciant.
Ahhhhhhhhhhhh, j'ai trouvé, oh miracle ^^
Voici mon programme (enfin la plupart à été fait par vous :D) :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier E1 : ");
scanf("%d",&E1);
for(int i=0;i<E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
if(i==15)
{
printf("%d ",i);
}
return;
}
Merci encore de votre aide.
Maintenant, je vais essayer de comprendre pourquoi vous avez utilisé ces termes, et comment ça se fait que ça marche ;)
Bonne soirée ;)
Voici mon programme (enfin la plupart à été fait par vous :D) :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier E1 : ");
scanf("%d",&E1);
for(int i=0;i<E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
if(i==15)
{
printf("%d ",i);
}
return;
}
Merci encore de votre aide.
Maintenant, je vais essayer de comprendre pourquoi vous avez utilisé ces termes, et comment ça se fait que ça marche ;)
Bonne soirée ;)
Arf, excusez-moi pour écrire plusieurs messages à la suite, mais je me suis encore trompé.
Voilà ce que je pense être bon :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier E1 : ");
scanf("%d",&E1);
for(int i=0;i<E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
if(i==E1 && (i%3)==0)
{
printf("%d ",i);
}
return;
}
Par contre, j'aurais un question :
Pourquoi dans la parenthèse de for, on incrémente i ?
Je vous dis ce que je pense avoir compris :
for (int i=0 ; i<E1 ; i++)
Alors voilà ce que j'ai compris :
On définit un entier i que l'on initialise comme égal à 0 (car 0 est divisible par 3), puis on dit qu'il ne peut être qu'inférieur à E1, puis on fait en sorte qu'il s'incrémente de trois en trois (grâce à ce que l'on écrit dans le if).
Ai-je bien compris ?
Merci de votre aide ;)
Bonne soirée ;)
Voilà ce que je pense être bon :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier E1 : ");
scanf("%d",&E1);
for(int i=0;i<E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
if(i==E1 && (i%3)==0)
{
printf("%d ",i);
}
return;
}
Par contre, j'aurais un question :
Pourquoi dans la parenthèse de for, on incrémente i ?
Je vous dis ce que je pense avoir compris :
for (int i=0 ; i<E1 ; i++)
Alors voilà ce que j'ai compris :
On définit un entier i que l'on initialise comme égal à 0 (car 0 est divisible par 3), puis on dit qu'il ne peut être qu'inférieur à E1, puis on fait en sorte qu'il s'incrémente de trois en trois (grâce à ce que l'on écrit dans le if).
Ai-je bien compris ?
Merci de votre aide ;)
Bonne soirée ;)
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
15 janv. 2006 à 21:52
15 janv. 2006 à 21:52
c'est a peu pès ca.
en fait en algorithmique ca donne : pour i allant de 0 à E1-1 par pas de 1(d'où le i++ , qui signifie en fait que l'on incrémente i de 1 (par pas de ...) ).
Au départ on a effectivement i qui vaut zéro.
On effectue les actions présentes dans la boucle .A la fin de la boucle, on incrémente i de la valeur que l'on veut(ici i++ ou (i=i+1); on pourrait aussi bien mettre i=i+3, ce qui incrémenterait i de 3 à la fin de la boucle).
ensuite on regarde si i est inférieur à i E1 : si c'est le cas on effectue de nouveau les actions dans la boucle; sinon la boucle se termine et l'on poursuit le programme.
J'espère que j'ai été assez clair, sinon redemandez moi. Voila
en fait en algorithmique ca donne : pour i allant de 0 à E1-1 par pas de 1(d'où le i++ , qui signifie en fait que l'on incrémente i de 1 (par pas de ...) ).
Au départ on a effectivement i qui vaut zéro.
On effectue les actions présentes dans la boucle .A la fin de la boucle, on incrémente i de la valeur que l'on veut(ici i++ ou (i=i+1); on pourrait aussi bien mettre i=i+3, ce qui incrémenterait i de 3 à la fin de la boucle).
ensuite on regarde si i est inférieur à i E1 : si c'est le cas on effectue de nouveau les actions dans la boucle; sinon la boucle se termine et l'on poursuit le programme.
J'espère que j'ai été assez clair, sinon redemandez moi. Voila
Non non, merci beaucoup, c'est très bien expliqué, j'ai compris ;)
Merci de votre aide.
Au fait, une dernière chose, je pourrais aussi faire comme ça :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier naturel E1 : ");
scanf("%d",&E1);
printf("\n\n\nTous les entiers naturels divisibles par trois et inferieurs ou egaux\na la valeur E1 entree sont : \n\n\n\n");
for(int i=0;i<=E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
printf("\n\n\n\n");
return;
}
Voilà, merci encore, et bonne soirée ;)
Merci de votre aide.
Au fait, une dernière chose, je pourrais aussi faire comme ça :
#include <stdio.h>
void main()
{
int E1;
printf("Saisir un entier naturel E1 : ");
scanf("%d",&E1);
printf("\n\n\nTous les entiers naturels divisibles par trois et inferieurs ou egaux\na la valeur E1 entree sont : \n\n\n\n");
for(int i=0;i<=E1;i++)
{
if((i%3)==0)
{
printf("%d ",i);
}
}
printf("\n\n\n\n");
return;
}
Voilà, merci encore, et bonne soirée ;)
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
16 janv. 2006 à 20:03
16 janv. 2006 à 20:03
Oui vous pouvez également faire cela.
Bonne soirée également.
Bonne soirée également.