[C] Problème avec une sorte de boucle.
L'Etudiant
-
arth Messages postés 9374 Date d'inscription Statut Contributeur Dernière intervention -
arth Messages postés 9374 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir.
En fait, je débute en langage C, et j'aimerais bien faire un petit programme qui fait en sorte que, lorsque l'on tappe un entier relatif par exemple, celui-ci nous affiche toutes les entiers naturels inférieurs ou égaux à la valeur entrée tels que tous ces entiers soient divisibles par 3.
Alors j'ai juste fait la partie la plus simple du programme, à savoir :
#include <stdio.h>
void main()
{
int n;
printf("Saisir un entier n : ");
scanf("%d",&n);
return;
}
Mais après le scanf, je ne sais pas du tout par quoi continuer.
J'ai pensé à while, for, if et else, mais je ne vois pas comment, avec ça, je pourrais arriver à mes fins.
Voilà, alors je voudrais savoir si quelqu'un pourrait m'aider, mais sans me faire le programme, juste en me donnant quelques indices, car j'aimerais trouver tout seul (avec votre aide bien entendu).
Merci et bonne soriée.
En fait, je débute en langage C, et j'aimerais bien faire un petit programme qui fait en sorte que, lorsque l'on tappe un entier relatif par exemple, celui-ci nous affiche toutes les entiers naturels inférieurs ou égaux à la valeur entrée tels que tous ces entiers soient divisibles par 3.
Alors j'ai juste fait la partie la plus simple du programme, à savoir :
#include <stdio.h>
void main()
{
int n;
printf("Saisir un entier n : ");
scanf("%d",&n);
return;
}
Mais après le scanf, je ne sais pas du tout par quoi continuer.
J'ai pensé à while, for, if et else, mais je ne vois pas comment, avec ça, je pourrais arriver à mes fins.
Voilà, alors je voudrais savoir si quelqu'un pourrait m'aider, mais sans me faire le programme, juste en me donnant quelques indices, car j'aimerais trouver tout seul (avec votre aide bien entendu).
Merci et bonne soriée.
A voir également:
- [C] Problème avec une sorte de boucle.
- Aucun son ne sort de mon pc - Guide
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image - Forum Excel
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Airpods 3 date de sortie - Guide
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image. quel mot apparaît en b1 ? - Forum Excel
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 :)
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 ;)
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 ;)