Les Allergies
Alimentaires
Posez votre question Signaler

Boucle for ( java )

mehdidani - Dernière réponse le 2 nov. 2009 à 12:18
Bonjour,
je suis censé résoudre cette exercice mais je n'y arrive pas :
Écrivez un programme qui va compter le nombre de nombres entiers compris entre m et n, deux entiers, qui sont divisibles par k, un entier positif.
Il faut résoudre ce problème à l'aide d'une boucle for, a priori, cela ne devrait pas être compliqué, mais quand on était pas présent au cours sur le sujet..
Lire la suite 

Boucle for ( java ) »

7 réponses
Réponse
+0
moins plus
Je ne suis pas sûr de comprendre le problème et ce k et entiers positifs etc etc,
Mais résumons la boucle for en java (comme en c, c++, php):


for(action initiale; condition à vérifier; action entre les itérations)
{
}



dans ton cas, la boucle doit être de la forme


// vérifications: positifs, le "k" etc etc par des if/else

for(int i = n; i < m; i++)
{

           // des if/else

 }



Si c'est pas suffisant, explique plus ton problème
Ajouter un commentaire
Réponse
+0
moins plus
Déja merci pour la description de la bloucle for, même si cela ne résout pas mon problème!

L'énoncé du probleme, il est tel que je vous l'ai donné, cela dit pas évident à comprendre c'est vrai.

Je pense que je dois faire une boucle, qui calcule le nombre de nombres qu'il y a entre les entiers m et n.

Par exemple, pour m= 38 et n=34, on obtiendrai comme réponse 5 ( car il y a 5 nombres entre ces deux nombres )


34, 35, 36, 37, et 38

L'histoire du K je ne comprend pas trop non plus, je pense qu'il faut que les deux nombres ( m et n ) soit divisible par k qui est un entier positif.
Ajouter un commentaire
Réponse
+0
moins plus
Alors:

int nombreEntiers = 0;

int max;
int min;

if(m < n)then
{
min = m;
max = n;
}else
{
min = n;
max = m;
}

for(int i = min; i <= max; i++)
{
nombreEntiers++;
}

</code>

Pour le cas: il te faut un if/else qui vérifie le modulo.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Écrivez un programme qui va compter le nombre de nombres entiers compris entre m et n, deux entiers, qui sont divisibles par k, un entier positif.

Moi je traduirais cet ennoncé magnifique comme ceci:

   /*
     *  
     * Écrivez un programme qui va compter le nombre de nombres d'entiers compris entre m et n.
     * m et n sont deux entiers positifs.
     * Le nombre d'entiers à trouver est celui des nombres de l'interval qui sont divisibles
     * par k qui est également un entier positif.
     *
     */
      
// donc:
       
         int diviseur1 = 2;
       
         int m = 31;
         int m2 = m;
         int n = 35;
         int resultat = 0;
         int k = diviseur1;

         for (int i = 0; i < ((n-m)+1); i++)
           {
               //System.out.println("m2 = " + m2);

               if (m2%k == 0)
               {
                  resultat++;
               }
               m2++;
            }
            System.out.println("\nRESULTAT: " + resultat);


Cordialement,

Dan
Ajouter un commentaire
Réponse
+0
moins plus
Ce n'est pas faux.. mais c'est comment faire compliqué quand on peut faire plus simple (et un peu optimisé) :)
L'écart minimum entre 2 nombres divisibles par k est k (!!) donc ça ne sert à rien de faire une "recherche" dans la for() avec un pas de 1 (par le i++).

int m = 9;
int n = 23;
int k = 5;
int nb = 0;

if(m%k == 0) {
	nb++;
}

for(int i = m+k-m%k; i < n ; i+=k) {
	nb++;
}

System.out.println("resultat : "+nb);


Au passage... la boucle for() est complètement inutile pour cet exercice... mais bon on n'est pas là pour noter la débilité de certains exercices :).
Puisque m+k-m%k nous donne le premier nombre A divisible par k et A > m.
De même n-n%k nous donne le dernier nombre B divisible par k et B < n.
Donc (B-A)/k ... avec 2 if() une pour tester si m est divisible par k, et une pour vérifier que A < B (ce qui n'est pas le cas si k > n-m)
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

>> bizu53

Ce n'est pas faux non plus, mais je ne pense pas que la lecture de cette petite boucle (imposée) soit compliquée à lire, j'ai simplement choisi de détailler un peu...

D'autre part, cet exercice n'est pas débile puisque c'est un exercice proposé suite à un cours sur les boucles.
Par contre l'énoncé...

Cordialement,

Dan
bizu53- 2 nov. 2009 à 12:18
Pour un des tous premiers exercices sur les boucles for() je pense que le prof s'attend à ce qu'on utilise la variable incrémentée dans la for()... alors que tu fais un i++ pour faire du m2++. Je comprends bien ta façon de faire, mais disons que ce n'est pas forcément la manière la plus évidente, celle qui vient en premier à l'esprit.

C'est sûr qu'il faut bien commencer par de petits exercices pour apprendre à se servir des for().. mais celui là est particulièrement mal choisi je trouve, c'est tout. (pour moi l'énoncé fait l'exercice, je ne dis rien sur le fait qu'il faille faire des exercices suite à qqch vu en cours)

;-)

Pour en revenir à l'initiateur de la discussion, au moins, c'est un bel exemple qu'en programmation il y a rarement (pour ne pas dire jamais) qu'une seule façon de faire :)
Ajouter un commentaire
Ce document intitulé « boucle for ( java ) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?