Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Jeu de calcul mental France IoI

Javascool

Sujet résolu
9 septembre 2019 à 21:24:20

Bonjour,

J'ai un problème pour résoudre ce sujet:

Au village, la passion pour le calcul mental est une tradition : des jeux centrés sur cette pratique sont régulièrement organisés par les habitants. Pour chaque jeu, ils décident d'abord combien de nombres devront être prononcés ; puis chaque joueur doit effectuer un calcul déterminé par les règles du jeu. Chaque fois que quelqu'un se trompe et qu'un autre joueur s'en rend compte, le joueur qui s'est trompé doit se corriger, et il devra un Gombo (une friandise du coin) à celui qui lui a signalé son erreur le plus rapidement.

Vous aimeriez participer, mais les habitants vont si vite et manipulent des nombres si grands que vous êtes tout de suite dépassé par les calculs ! Alors qu'un nouveau jeu se prépare, vous décidez finalement d'utiliser votre robot pour vous aider à rivaliser.

Ce que doit faire votre programme :

Un nombre de départ va être donné par le chef du village. La personne qui suit doit le multiplier par 2, puis la suivante doit multiplier le nombre obtenu par 3, celle d'encore après doit multiplier le résultat par 4… jusqu'à ce que les <var>nbNombres</var> calculs aient été effectués.

Le chef a choisi le nombre 66 pour démarrer le jeu. Votre programme lira l'entier <var>nbNombres</var>, la quantité de nombres attendue par le jeu (nombre de départ inclus). Il devra ensuite afficher tous les nombres de la partie afin de vous rendre imbattable !

Exemples

Exemple 1

entrée :

4

sortie :

66
132
396
1584

Exemple 2

entrée :

1

sortie :

66

Commentaires

Les valeurs du premier exemple correspondent aux calculs suivants :

  • 66
  • 66 × 2 = 132
  • 132 × 3 = 396
  • 396 × 4 = 1584

Voilà mon code:

void main()
{
   int nbDepart=66;
   int nbNombres=readInt();
   int multiplicateur=1;
   repeat(nbNombres+1)
   {
      nbDepart=nbDepart*multiplicateur;
      println(nbDepart);
      multiplicateur=multiplicateur+1;
   }
}

Voilà le résultat:

La réponse donnée par votre programme est incorrecte. Il a affiché :

66
132

au lieu de :

66

Quel est le problème?

Merci!

  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2019 à 7:53:41

Bonjour,

On te demande d'afficher "nbNombres" calculs mais dans ta boucle, tu en affiches un de plus. "repeat(nbNombres+1)"

  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2019 à 9:15:12

Bonjour,

Merci pour ton aide!

Est-ce que l'on pourrait me faire une explication détaillée de ce résultat:

void main()
{
   int nbNombres = readInt();
   int résultat = 66;
   for (int facteur = 1; facteur <= nbNombres; facteur = facteur + 1)
   {
      résultat = résultat * facteur;
      println(résultat);
   }
}
Car je n'avais jamais utilisé:
   for (int facteur = 1; facteur <= nbNombres; facteur = facteur + 1)
Dans mes programmes et j'aimerais comprendre la ligne pour les futurs ^^
Merci!
  • Partager sur Facebook
  • Partager sur Twitter
10 septembre 2019 à 19:20:22

La boucle for a cette structure

for (initialisation; condition; mise à jour) {
    instructions
}

C'est équivalent à

initialisation
while (condition) {
    instructions
    mise à jour
}

mais c'est plus compact.

C'est particulièrement adapté aux boucles dont on connait le nombre d'itérations en avance.


  • Partager sur Facebook
  • Partager sur Twitter
12 septembre 2019 à 18:05:49

Merci pour tes précisions, je pense avoir saisi :)
  • Partager sur Facebook
  • Partager sur Twitter
24 février 2020 à 16:07:18

salut

je fait le même problème mais en python, mon code fonctionne sur visual mais pas sur l'exercice 

voici mon code 

nbNombre = int(input())

x =66

i =1

while i <nbNombre :

    x=x*i

    i=i+1

    print (x)

sur visual ca marche mais sur le site il ne retourne aucune valeur, pouvez vous m'aider s'il vous plais ?

  • Partager sur Facebook
  • Partager sur Twitter