Besoin d'aide - Course avec les enfants

Exercice IOI FRANCE

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous!

Je suis débutant en programmation et j’ai commencé les exercices sur le site IOI FRANCE. Le langage que j’ai choisi est le Java.

Je me retrouve bloqué dans l’exercice "Course avec les enfants."

le lien de l’exercice ici

J’ai du faire pus de 40 soumissions, rien y fait. Il y a sans doute un truc dans mon code qui ne vas pas. Je souhaiterais l’avis de personnes plus expérimenté ainsi que des conseils. Je ne veux surtout pas des réponse toutes faites. Le but étant, que je m’améliore en logique et algorithmie.

Voici le dernier code que j’ai soumis:

import static algorea.Robot.*;

class Main {
   public static void main(String [] args) {;
           for (int loop1 = 1; loop1 <= 10; loop1 = loop1 + 1) {
           
               for (int loop2 = 1; loop2 <= 1; loop2 = loop2 + 1) {
               droite();
               }
               ramasser();
                   for (int loop3 = 1; loop3 <= 1; loop3 = loop3 + 1) {
                     gauche();
                     }
                     deposer();
           }
       }
  }

+0 -0

Tu comprends ce que tu dois faire ?

Pour le premier anneau : 1x droite => Ramasser => 1x gauche => Déposer.
Pour le deuxième anneau : 2x droite => Ramasser => 2x gauche => Déposer.
Pour le troisième anneau : 3x droite => Ramasser => 3x gauche => Déposer. …

Ce qui est bien dans ton code c’est que tu fais bien les bonnes boucles au bon endroit.
Tu as bien la boucle principale qui parcourt chacun des anneaux (Pour le 1er, le 2em, …). Mais tes boucles intermédiaires (droite et gauche) ne font chacune qu’un tour.

for (int loop2 = 1; loop2 <= 1; loop2 = loop2 + 1)

Ici, loop2 = 1 dès le deuxième tour de boucle on s’arrête. Ce qui ne va pas dans ton code c’est ça. loop2 <= 1 devrait être autre chose.

Il y a un deuxième truc qui ne va pas, c’est l’indentation, ça rend ton code difficile à lire. Ensuite, je pense que tu gagnerais à mieux nommer tes variables. loop1 <=> numeroAnneau, loop2 <=> i_droite <=> i.

+1 -0

Premièrement, par principe on commence les boucle à 0 et on met ˋ< 10`.

Ensuite ta première boucle fait bien 10 itérations, en revanche ta deuxième boucle qui fait « droite » n’est exécutée qu’une seule fois à chaque itération.

Donc pour ta deuxième boucle, tu aurais plutôt quelque chose du style:


for (int loop2 = 0; loop2 < loop1; loop2 = loop2++) 

Comme ceci, le nombre d’exécution de la deuxième boucle évolue en fonction de l’itération de la première boucle.

Édit: grillé par @ache, mais je laisse ma réponse pour te donner deux explications avec des termes différents qui pourront peut être t’aider ;)

+1 -0

Merci pour vos réponses! Vos conseils ont fonctionné instantanément! ache, Il va en effet falloir que je m’améliore sur mon indentation. WinXaito, je ne savais pas qu’il était possible de faire loop2<loop1…ça peut paraître simple mais ça va beaucoup m’aider!

Encore merci à vous deux!

Pas de soucis.
Tu peux passer ton sujet en résolu afin d’aider les autres qui ont le même problème que toi. C’est idéal car tu as mis le nom de l’exercice dans le titre 👍. ^^

C’est une “Actions” en “haut” à gauche

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte