IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Enveloppe convexe en C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 2
    Points : 0
    Points
    0
    Par défaut Enveloppe convexe en C
    Bonjour, j'ai un projet a faire pour mon cours d'algorithmique auquel j'y comprend absolument rien. Y'aurait-il pas une âme charitable pour me faire une partie qui est de créé des fonction avec des vecteurs?

    Voici la partie en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct vec {
    double x;
    double y;
    };
     
    struct vecset {
    struct vec *data;
    size_t size;
    size_t capacity;
    };
    Question 2.1 Donner le code d’une fonction qui crée un ensemble de points
    vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void vecset_create(struct vecset *self);
    Question 2.2 Donner le code d’une fonction qui détruit un ensemble de
    points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void vecset_destroy(struct vecset *self);
    Question 2.3 Donner le code d’une fonction qui ajoute un point à un ensemble
    de points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void vecset_add(struct vecset *self, struct vec p);

    On considère une fonction de comparaison de points avec un contexte qui
    renvoie un entier strictement négatif si p1 est «plus petit» que p2, un entier
    strictement positif si p1 est «plus grand» que p2 et 0 si p1 est «égal» à p2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef int (*comp_func_t)(const struct vec *p1,
    const struct vec *p2, const void *ctx);
    Question 2.4 Donner le code d’une fonction qui renvoie le maximum d’un
    ensemble de points suivant une fonction de comparaison donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const struct vec *vecset_max(const struct vecset *self,
    comp_func_t func, const void *ctx);
    Question 2.5 Donner le code d’une fonction qui renvoie le minimum d’un
    ensemble de points suivant une fonction de comparaison donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const struct vec *vecset_min(const struct vecset *self,
    comp_func_t func, const void *ctx);
    Question 2.6 Donner le code d’une fonction qui trie l’ensemble de points
    suivant la fonction de comparaison donnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void vecset_sort(struct vecset *self, comp_func_t func,
    const void *ctx);

    On va maintenant voir le tableau dynamique comme une pile, avec le haut
    de la pile à la fin du tableau.

    Question 2.7 Donner le code d’une fonction qui empile un élément.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void vecset_push(struct vecset *self, struct vec p);
    Question 2.8 Donner le code d’une fonction qui dépile un élément.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void vecset_pop(struct vecset *self);
    Question 2.9 Donner le code d’une fonction qui renvoie le premier élément
    de la pile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const struct vec *vecset_top(const struct vecset *self);
    Question 2.10 Donner le code d’une fonction qui renvoie le second élément
    de la pile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const struct vec *vecset_second(const struct vecset *self);

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par huso3932 Voir le message
    Y'aurait-il pas une âme charitable pour me faire une partie qui est de créé des fonction avec des vecteurs?
    A mon avis non. Ok ce n'est que mon avis mais cet avis s'appuie sur le fait qu'on n'est pas là pour faire tes exercices à ta place, que ce serait injuste vis à vis des autres qui font ce TP eux-même, que quand tu seras dans le vrai monde où on code pour de vrai tu ne pourras pas taper tes collègues pour qu'ils fassent le job à ta place, que si ton but est d'étudier honnêtement le corrigé tu pourras toujours étudier celui du prof et que de toute façon c'est contraire aux règles du forum (chapitre IV-N).

    Citation Envoyé par huso3932 Voir le message
    j'y comprend absolument rien
    Tu sais ce qu'est une structure. Tu sais ce qu'est un vecteur (une flêche qui part de 0 et qui s'arrête sur un point (x, y) du plan). Ou si tu ne le sais pas, alors tu retournes à la partie de ton cours qui en parle.

    La structure "struc vec" reprend simplement cette notion en stockant le "x" et le "y" en question. Donc si tu définis (par exemple) un struct vec toto tu peux dire "toto est un vecteur" et avec toto.x et toto.y tu peux gérer le "x" et "y" dudit vecteur.
    Ensuite un "ensemble de trucs (ici un ensemble de vecteurs), en C, se traduit par un "tableau de trucs" (donc un tableau de vecteurs). Et comme un tableau ce n'est qu'une adresse (celle de son premier élément), c'est là que vient le struct vec *data signifiant "data est l'adresse d'un vecteur et peut-être qu'à partir de cette adresse on pourra en trouver d'autres à suivre" (puisque, comme tu le sais certainement , tous les éléments d'un tableau se suivent en mémoire). Puis comme l'allocation et surtout la réallocation d'un tableau est une opération lourde, on préfère ne pas la faire trop souvent donc au lieu d'allouer de 1 en 1, on préfère allouer de n en n (exemple de 100 en 100). Donc on alloue 100, puis quand les 100 seront tous remplis on réallouera de 200 et etc. Mais pour pouvoir savoir que c'est rempli, il faut savoir d'un côté combien on a alloué et de l'autre combien on a d'éléments. C'et là que viennent le size_t size et size_t capacity. Et comme tous ces éléments vont ensembles, on les regroupe dans une structure "struct vecset" ce qui est alors plus facile pour les manipuler.

    Une fois que t'as compris tout ça, t'as fait les 3/4 du chemin.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Triangulation domaine convexe
    Par Simpom dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/09/2006, 17h34
  2. face concave en faces convexes
    Par TONIAPEL dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 06/05/2006, 13h39
  3. enveloppe convexe
    Par hamdouch dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 15/04/2006, 17h37
  4. Calcul d'enveloppe convexe + triangulation
    Par Celelibi dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 24/11/2005, 18h02
  5. une ligne et un polygone convexe
    Par rekam dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/12/2002, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo