Partage
  • Partager sur Facebook
  • Partager sur Twitter

PROGRAMME PÉRIMÈTRE

PYTHOOOONNNN C NULLL

    6 novembre 2019 à 15:17:57

    bonjours moi et ma classe n'arrivons pas a comprendre ce qu'il faut faire et surout COMMENT le faire 

    Ecrire un programme perimetre qui prend un argument une liste de points sous la forme d'un tableau du type [xA,yA,xB,yB,xC,yC,....] et qui calcule le périmètre du polygone ABC..

    donc si qqn peut nous venir en aide et nous sauvez d'un desastre general on vous sera reconnaissant

    ps desoler pour les fautes d'ortho

    • Partager sur Facebook
    • Partager sur Twitter
      6 novembre 2019 à 15:43:31

      C'est un périmètre, il faut calculer la distance entre les points (xA, yA) et (xB, yB), puis entre les points (xB, yB) et (xC, yC), etc... et additionner.

      • Partager sur Facebook
      • Partager sur Twitter
        6 novembre 2019 à 16:35:38

        JuliaLaktineh a écrit:

        ps desoler pour les fautes d'ortho

        Le temps qu'il faut pour écrire ça, tu aurais pu l'utiliser pour ajouter des majuscules en début de phrases et des points à la fin, rien que ça améliorerait pas mal la forme.

        Surtout que niveau orthographe, on a vu pire.

        Pour revenir sur le problème principal, on vous a donné une base de code à compléter ou pas ? C'est votre première année de programmation ?

        • Partager sur Facebook
        • Partager sur Twitter

        Blond, bouclé, toujours le sourire aux lèvres...

          6 novembre 2019 à 16:50:05

          C'est pas compliqué pourtant !

          f=lambda O:sum((abs(oO-Oo)**2+abs(OO-O0)**2)**0.5 for(Oo,O0),(oO,OO)in zip(zip(O[::2],O[1::2]),zip((O+O[:2])[2::2],(O+O[:2])[3::2])))
          print(f((1, 2, 3, 4, 5, 6, 7, 8)))

          ;)

          • Partager sur Facebook
          • Partager sur Twitter
            6 novembre 2019 à 17:28:13

            x)
            C'est hérétique d'assigner un lambda.

            Et au passage abs sert à rien si tu met au carré.

            • Partager sur Facebook
            • Partager sur Twitter
              6 novembre 2019 à 18:16:10

              JuliaLaktineh a écrit:

              bonjours moi et ma classe n'arrivons pas a comprendre ce qu'il faut faire et surout COMMENT le faire 

              Ecrire un programme perimetre qui prend un argument une liste de points sous la forme d'un tableau du type [xA,yA,xB,yB,xC,yC,....] et qui calcule le périmètre du polygone ABC..

              donc si qqn peut nous venir en aide et nous sauvez d'un desastre general on vous sera reconnaissant


              Tu es en quelle classe ? Pour la réponse, tout dépend de ce qu'on vous a appris. Mais l'exercice n'a rien d'évident si on est un débutant complet en Python. Je vais supposer que vous savez le strict minimum.

              Soit L la liste qui est donnée. Supposons que le polygone ait n sommets. La liste contient donc 2n nombres. Pour calculer le périmètre, il faut calculer la somme des longueurs consécutives. Il y a n côtés donc tu peux être sûr que dans ton code tu auras qqchose du genre :

              for k in range(n):

              Dans le corps de la boucle ci-dessus, on va se déplacer dans la liste et récupérer les coordonnées des points,

              • le 1er et le 2e
              • le 2e et le 3e
              • le 3e et le 4e
              • etc

              On voit bien qu'on va avoir un problème avec notre liste L pour calculer la longueur du dernier côté car un des points sera à la fin et l'autre sera au début. Pour que tout ça soit plus simple à coder, on va se permettre de rajouter dans la liste L, à la fin, le premier point, ce qui donne :

              L.append(L[0])
              L.append(L[1])

              Ensuite comment calculer la somme (je suppose que tu sais calculer une somme avec une boucle for, sinon ce n'st même pas la peine ...) ?

              Tu définis ta variable somme initialisée à 0 et tu vas définir un indice qui va t'aider à progresser dans ta liste pour extraire les points deux par deux dans l'ordre indiqué ci-dessus, donc au total extraire des nombres 4 par 4. Ce qui va donner quelque chose comme, que je te laisse compléter :

              L=[0,0,4,0,4,7,0,4,-3, 4]
              N=len(L)
              n=N//2
              i=0
              s=0
              
              L.append(L[0])
              L.append(L[1])
              
              
              for k in range(n):
                  # Il manque
                  # le code pour les deux points
                  # à extraire
                  # (4 nombres)
                  # Penser à mettre à jour i
                  
                  # A toi de l'écrire      
                 
                  cote=((xA-xB)**2+(yA-yB)**2)**.5
                  s=s+cote
                  
              
              print(s)
              
              
              24.0


              Il est aussi possible de se dispenser de l'indice auxilaire i et de se débrouiller avec k seulement, je trouve que c'est plus facile avec i.

              Il te restera à écrire une fonction mais une fois le code ci-dessus rempli, c'est facile.

              -
              Edité par PascalOrtiz 6 novembre 2019 à 18:24:36

              • Partager sur Facebook
              • Partager sur Twitter
                7 novembre 2019 à 8:17:32

                Bonjour Pascal

                Je viens de lire ton message. Julia est une amie de ma fille. Elles sont en seconde et débute en programmation et en Python.... L'exercice me paraît très compliqué pour des novices en programmation.

                Moi même est fait un peu de programmation et j'avoue ne pas comprendre beaucoup....

                Dans ta liste L tu as mis des nombres au hasard ou bien d'où sort il? Merci de ton aide.

                L'exercice est noté c'est pour demain vendredi.

                • Partager sur Facebook
                • Partager sur Twitter
                  7 novembre 2019 à 9:18:33

                  Ta fille est à LLG ? ;) Pour la complexité, je partage ton avis :)

                  Pour faire marcher ce programme il faut un polygone avec ses sommets. En plaçant des points sur un quadrillage, j'ai dessiné un polygone (ce qui m'a permi d'obtenir la liste en question ) et j'ai fait en sorte qu'il ait un périmètre entier, cela pour vérifier que le programme est juste (périmètre 24). Mais ça pourrait tout aussi bien marcher avec une liste d'entiers aléatoires.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 novembre 2019 à 13:58:19

                    MartineDesay a écrit:

                    Elles sont en seconde et débute en programmation et en Python.... L'exercice me paraît très compliqué pour des novices en programmation.

                    Je pensais pas qu'on faisait de la programmation dès la seconde !

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Blond, bouclé, toujours le sourire aux lèvres...

                      8 novembre 2019 à 19:56:48

                      pascal je vous remercie énormément mais j’essaye de trouve la fonction qui manque mais j'ai vraiment du mal
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 novembre 2019 à 21:49:20

                        L'exercice était pas à rendre pour vendredi ?
                        • Partager sur Facebook
                        • Partager sur Twitter

                        PROGRAMME PÉRIMÈTRE

                        × 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