Partage
  • Partager sur Facebook
  • Partager sur Twitter

Périmètre polygone quelconque

Sujet résolu
    11 novembre 2022 à 15:27:57

    Bonjour à tous !
    je dois réaliser un programme en C afin de calculer le périmètre pour un polygone quelconque en entrant son nombre de côtés puis les coordonnées des sommets. 
    Pour un polygone donné, la réalisation du programme est facile mais pour un polygone quelconque je suis en difficulté. Je sais qu'il faut faire avec une boucle For mais je sais pas trop comment m'y prendre...
    Merci d'avance pour vos conseils précieux !

    -
    Edité par Aldzz 11 novembre 2022 à 16:52:42

    • Partager sur Facebook
    • Partager sur Twitter
      11 novembre 2022 à 15:43:56

      Et pourquoi faut-il faire une boucle for ? C'est la saison, comme pour ramasser les feuilles mortes ?
      • Partager sur Facebook
      • Partager sur Twitter
        11 novembre 2022 à 16:10:23

        michelbillaud a écrit:

        Et pourquoi faut-il faire une boucle for ? 

        Peut-être parce qu'il connait le nombre de cotés ?

        • Partager sur Facebook
        • Partager sur Twitter
        ...
          11 novembre 2022 à 16:43:58

          #include <stdio.h>
          #include <stdlib.h>
          #include<math.h>
          
          main ()
          
          {
          
              float x,y;
              int i,n;
              
          
              {
                  
                  printf("Calcul de permitre de polygome quelquconque\n");
                  printf("-------------------------------------------\n\n");
          
                  printf("Entrez le nombre de cotes du polygome n = \n");
                  scanf("%d",&n);
          
                  printf("Il y a %d sommets (points)\n\n",n);
          
          
                  for ( i=1 ; i<=n ; i++ ) {
          
                                            printf("point %d : \n",i);
                                            printf("----------\n");
          
                                            printf("Entrez la coordonnee x%d =\n",i);
                                            scanf("%f",&x);
                                            printf("Entrez la coordonnee de y%d =\n",i);
                                            scanf("%f",&y);
          
                                            printf("Point %d -> ( %.1f ; %.1f ) \n\n",i,x,y);
          
                                            
                                            
          
                                          }
          
          
          
              }
          
          
          
          
          }


          michelbillaud a écrit:

          Et pourquoi faut-il faire une boucle for ? C'est la saison, comme pour ramasser les feuilles mortes ?


          La boucle for me permet d'écrire les coordonnées des points en fonction du nombre de côtés

          -
          Edité par Aldzz 11 novembre 2022 à 17:25:20

          • Partager sur Facebook
          • Partager sur Twitter
            11 novembre 2022 à 17:13:29

            Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
            • Partager sur Facebook
            • Partager sur Twitter
            ...
              11 novembre 2022 à 17:25:09

              Aldzz : tu as presque fini ! Il ne reste plus qu'à incrémenter le périmètre à chaque fois qu'un point est lu (sauf le premier). Ça signifie qu'il faut conserver les coordonnées du point précédent dans une variable temporaire.
              • Partager sur Facebook
              • Partager sur Twitter
                11 novembre 2022 à 17:31:38

                Il me semble que ça se calcule sans boucle en connaissant le nombre de côtés.
                Pour simplifier, si le rayon vaut 1 et le nombre de côtés est N.
                L'angle entre deux sommets n'est-il pas 2*PI / N ?
                Soit a = 2*PI / N
                h = sin(a)
                l = 1 - cos(a)
                c = sqrt(h*h+l*l)
                périmêtre = c * N
                Ça fait du sens ?
                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  11 novembre 2022 à 17:43:02

                  @ Pierrot,

                  Aldzz a écrit:

                  afin de calculer le périmètre pour un polygone quelconque...

                  il n'a pas dit que c'était un polygone régulier.



                  • Partager sur Facebook
                  • Partager sur Twitter
                  ...
                    11 novembre 2022 à 17:51:15

                    Alors, la géométrie risque d'être plus compliquée.
                    L'idée est de toujours se ramener à des triangles rectangles.
                    J'ai ttesté mon truc en Python et le périmètre converge vers la circonférence quand N devient grand (par ex. N=1000)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      11 novembre 2022 à 18:15:00

                      robun a écrit:

                      Aldzz : tu as presque fini ! Il ne reste plus qu'à incrémenter le périmètre à chaque fois qu'un point est lu (sauf le premier). Ça signifie qu'il faut conserver les coordonnées du point précédent dans une variable temporaire.


                      je vois toujours pas.. j'ai pas précisé mais je suis un PURE débutant, désolé :lol:
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 novembre 2022 à 18:36:10

                        Est-ce que tu connais les tableaux? Et ça prend plus que deux points pour commencer à évaluer le périmètre.
                        Est-ce que ton polygone ne contient que des angles convexes (tournés vers l'extérieurs).
                        Sinon, ça va te prendre tous les points.

                        -
                        Edité par PierrotLeFou 11 novembre 2022 à 18:43:41

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Le Tout est souvent plus grand que la somme de ses parties.

                          11 novembre 2022 à 18:44:50

                          PierrotLeFou a écrit:

                          Est-ce que tu connais les tableaux? Et ça prend plus que deux points pour commencer à évaluer le périmètre.
                          Est-ce que ton polygone ne contient que des angles convexes (tournés vers l'extérieurs).
                          Sinon, ça va te prendre tous les poiants.


                          On a pas encore vu le chapitre des tableaux jusqu'à présent..
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 novembre 2022 à 18:48:43

                            Est-ce que tu as des règles sur la forme de tes polygones? Sinon, ça va être très compliqué.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Le Tout est souvent plus grand que la somme de ses parties.

                              11 novembre 2022 à 19:10:25

                              PierrotLeFou a écrit:

                              Est-ce que tu as des règles sur la forme de tes polygones? Sinon, ça va être très compliqué.

                              Pas de règles concernant les polygones. Il faut trouver le périmètre en fonction du nombre de côtés et des coordonnées qu'on a entré dans le programme. 

                              exemple :

                              j'insère dans mon programme n(nombre de côtés) = 3

                              ensuite j'insère les coordonnées des sommets : (x1,y1) , (x2,y2) ,et (x3,y3).

                              On aura ainsi périmètre = racine((x2-x1)^2+(y2-y1)^2) + racine((x3-x2)^2+(y3-y2)^2) + racine((x1-x3)^2+(y1-y3)^2)

                              Mais il faut un programme pour calculer le perimetre de n'importe quel polygone ( on insère n cotes avec les coordonnées des sommets et ça nous calcule le périmètre)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 novembre 2022 à 19:13:56

                                PierrotLeFou a écrit:

                                ... Sinon, ça va être très compliqué.

                                Pas tant que ça.

                                Aldzz a écrit:

                                je dois réaliser un programme en C afin de calculer le périmètre pour un polygone quelconque en entrant son nombre de côtés puis les coordonnées des sommets. 

                                Vu que l'on a les coordonnées de chaque sommet, on a tout ce qu'il faut pour calculer la longueur d'un coté du polygone, et on peut le faire a mesure des saisies. Comme dit robun il suffit de mémoriser le sommet précédent, puis calculer les déplacement de x et y et avec calculer la longueur du coté. Ajouter cette longueur au périmètre jusqu’à la fermeture du polygone. 

                                -
                                Edité par rouIoude 11 novembre 2022 à 19:14:39

                                • Partager sur Facebook
                                • Partager sur Twitter
                                ...
                                  11 novembre 2022 à 19:28:10

                                  Avec Cette Astuce les Polytechniciens Vont Vous Détester : n'oubliez pas que le dernier sommet est relié au premier.

                                  En première approche
                                  -----------------------
                                  
                                  
                                  noter les coordonnées du premier 
                                  
                                  pour chacun des autres
                                      ajouter la distance au précédent
                                  
                                  ajouter la distance du dernier au premier
                                  


                                  Il va donc falloir

                                  • une variable pour faire le total, initialisée à 0
                                  • se souvenir du premier point, donc des coordonnées (x1, y1)
                                  • dans la boucle traiter un point (x,y) tout en se souvenant du précédent (xp, yp)
                                  • savoir calculer la distance entre 2 points
                                  • ne pas oublier la distance entre premier et dernier.
                                  Un exercice pour les plus grands :
                                  • calculer le périmètre du PLUS PETIT POLYGONE CONVEXE qui contient les points.
                                   (ils sont donnés dans le désordre, évidemment. Et il y en a qui sont à l'intérieur)

                                  -
                                  Edité par michelbillaud 11 novembre 2022 à 19:40:37

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 novembre 2022 à 21:48:54

                                    Merci pour vos conseils et aide précieuse ! J'ai trouvé la solution :lol:
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 novembre 2022 à 22:07:25

                                      Aldzz a écrit:

                                      Merci pour vos conseils et aide précieuse ! J'ai trouvé la solution :lol:

                                      Bonjour, Il serait bien de donner la solution que vous avez trouvé pour d'autres qui feraient des recherches ultérieur sur le forum. Merci.

                                      Sujet résolu

                                      Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Périmètre polygone quelconque

                                      × 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