[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
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.

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 :)
0
Euh, quelqu'un pourrait-il m'aider SVP ?
0
Vraiment personne :(
0
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
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.
0

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.
0
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 ;)
0
Euhhh, à la place de 15, c'est E1 :D
0
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 ;)
0
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
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
0
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 ;)
0
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
Oui vous pouvez également faire cela.

Bonne soirée également.
0