Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme France IOI - Grand inventaire

    26 juillet 2019 à 20:18:51

    Bonjour,

    Après des tonnes et des tonnes de tentatives je tourne en rond dans l'exercice ci-dessous.

    J'ai l'impression d'avoir très mal saisi l'outil "for", si quelqu'un pouvez me guider un peu dans cet exercice pour me permettre d'en voir plus clair, ce serait génial.

    L’énoncé :

    Ce que doit faire votre programme :

    Un livre de comptes décrit les achats et ventes successives de 10 produits numérotés de 1 à 10. Le livre décrit les opérations depuis une situation où le stock de chacun des produits était de zéro.

    Chaque ligne du livre de comptes décrit l'achat (augmentation du stock) ou la vente (réduction du stock) d'une certaine quantité de l'un des produits.

    Votre objectif est de déterminer pour chaque produit, la quantité restant dans le stock à l'issue de l'ensemble de ces achats et ventes.

    Entrée

    La première ligne contient un entier nbOperations : le nombre d'opérations décrites dans le livre de comptes.

    Suivent ensuite nbOperations paires d'entiers, où le premier entier de chaque paire est le numéro de l'ingrédient concerné par l'opération, et le deuxième est la quantité. Si la quantité est négative, l'opération est une vente, et si elle est positive, l'opération est un achat du produit indiqué.

    Sortie

    Vous devez afficher 10 entiers sur la sortie : la quantité restante pour chacun des produits dans l'ordre de leur numéro, une fois l'ensemble des opérations décrites dans le livre effectuées

    Mon programme :

    nbOperations = int(input())
    
    stockingredient = 0
    produits = 10
    tableau = [0] * produits
    
    
    for n in range (nbOperations):
       numingredient = int(input())
       quantiteingredient = int(input())
       if quantiteingredient <0:
          stockingredient[tableau] = stockingredient[tableau] - quantiteingredient
       else:
          stockingredient[tableau] = stockingredient[tableau] + quantiteingredient
      
          
    for loop in range (10):
       print(stockingredient)

    Visiblement une erreur à la ligne 14: "int" obect is not subscritable.

    Mais du coup j'ai du mal à voir comment assigner un calcul à l'un des éléments du tableau.

    De plus la façon dont j'ai configuré le tableau est-t-elle correct ou un simple [9] était suffisant pour un tableau de 10 éléments (produits).

    Merci!

    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2019 à 20:59:23

      Bonjour,

      Oui l'interpréteur a raison, on ne peut pas accéder à l'index d'un entier. Voir le type de valeur de stockingredient.

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        26 juillet 2019 à 23:26:18

        Une idée pour me débloquer ?

        Je retourne le problème dans tous les sens, mais j'ai l'impression de m'y perdre plus qu'autre chose.

        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2019 à 0:18:38

          ThibaudGeisler a écrit:

          Une idée pour me débloquer ?

          Je retourne le problème dans tous les sens, mais j'ai l'impression de m'y perdre plus qu'autre chose.


          Comme fred1599 te l'a dit, tu fais une opération 

          stockingredient[tableau]

            qui n'a pas de sens. Tu ne serait pas en train de confondre avec 

          tableau[stockingredient] 

          ?

          D'autre part, tu captures numingredient (ligne 9) mais tu ne l'utilises pas.

          Par ailleurs, même si ce n'est pas gênant, tu peux regrouper les lignes 11-14 en une seule ligne et d'ailleurs, je me demande si là non plus il n'y a pas une erreur (de logique).

          Et pendant que j'y suis, tu n'utilises pas le décalage d'indice sur lequel l'énoncé pourtant met en garde. Donc tu vois qu'il y reste pas mal de choses à reprendre !

          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2019 à 8:46:44

            Bonjour,

            Je pense que tu fais une confusion entre les tableaux et les indices. La syntaxe correcte est

            nom_du_tableau[indice]

            Si j'essaye de comprendre ta pensée en regardant ton code, je dirais que tu essayes de récupérer la valeur du stock pour l'objet courant dans stockingredient, de lui ajouter la quantité et de remettre stockingredient dans le tableau, le tout, en une seule instruction.

            C'est impossible.

            Soit tu utilises la variable stockingredient pour récupérer la valeur du stock actuel, puis dans une autre instruction, tu utilises stockingredient et quantiteingredient pour mettre à jour le stock dans le tabjeau.

            Soit tu mets le tableau à jour directement, sans passer par stockingredient.Ca peut se faire en une instruction.

            • Partager sur Facebook
            • Partager sur Twitter
              29 juillet 2019 à 18:47:22

              Bonjour,

              Merci pour vos réponses.

              Effectivement j'ai bien confondu indice[nomtableau] avec tableau[indice].

              Mais j'ai du mal à comprendre comment je peux récupérer un numéro aléatoire dans la liste et travaillé avec.

              Car je cherche par ex à connaitre le num ingredient via un input, mais je ne peux visiblement pas faire stockingredient[numingredient].

              Il m'est également impossible de faire un tableau produit [1,2,3,4,5,6,7,8,9,10] et de l'utiliser avec stockingredient[produit]. De toute façon dans ce cas la variable numingredient n'est pas utilisé.

              Si une ame charitable pouvez me donner un modèle sur lequel je peux travailler ce serait parfait, car je n'arrive pas à m'en sortir pour les exercices suivants, avec la logique qui m'a échappé, même en regardant des tutos sur le net (qui ne traite pas vraiment de ma problématique).

              Merci

              • Partager sur Facebook
              • Partager sur Twitter

              Probleme France IOI - Grand inventaire

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown