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

Pascal Discussion :

Retourner la position d'un élément d'un tableau de réels


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Retourner la position d'un élément d'un tableau de réels
    Salut à tous.
    Je cherche quelqu'un qui peut m'aider en me donnant soit la fonction dans le langage Pascal qui retourne la position d'un élément d'un tableau de réels, soit le code source correspondant.
    N.B. :
    Dans excel il existe cette fonction :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    RANG(nombre;référence;[ordre])
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Bonjour,

    A ma connaissance, une telle fonction n'existe en standard, trop spécifique à mon sens. Plutôt que d'attendre tranquilement un code fourni gracieusement, ne pourriez-vous pas commencer par chercher une solution par vous-même ?

    Si j'ai bien compris, j'ai cherché ce que fait la fonction RANG d'Excel, il s'agit de déterminer pour une valeur donnée d'un tableau, son rang si le tableau était trié par ordre décroissant, l'énoncé que vous donnez ne correspond pas vraiment, il laisse penser que que vous cherchez sa position sans se soucier de l'ordre des valeurs.

    A vue de nez, je vois deux solutions sans les avoir vérifier, mais je vous invite à y réfléchir un peu avant.

    Petite question: Etes-vous enseignant en informatique ?

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  3. #3
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    tu peux la coder toi meme facilement

    voila un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    program t;
     
    uses crt;
     
    function pos_in_tab(t : array of real; size : integer; r : real) : integer;
    var
        i : integer;
    begin
        for i := 0 to size do
        begin
            if (t[i] = r) then
            begin
              pos_in_tab := i;
              exit;
            end;
        end;
        pos_in_tab := 0;
    end;
     
     
    var
        tab : array[0..5] of real;
    begin
        tab[0] := 0.0;
        tab[1] := 0.1;
        tab[2] := 0.2;
        tab[3] := 0.3;
        tab[4] := 0.4;
     
        writeln(pos_in_tab(tab, 5, 0.1));
    end.
    Le principe est de parcourir le tableau jusqu'a trouver 2 nombres identiques, puis enfin retourner notre indice

    edit :
    Je n'avais pas vu que le tableau devais etre trie.
    A toi d'y mettre du tient aussi, si tu es un enseignant, ce n'est pas un trie qui devrait de faire peur

    edit2 : dans mon code, je renvoie 0 en cas d'erreur, il faudrais mieux renvoyer -1, car un indice de 0 est valide

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Salut Epitouille, l'algo que tu proposes ne répond pas au besoin si j'ai bien
    compris celui-ci. Tu fais une recherche séquentielle dans le tableau et tu retourne la position ordinale de la valeur dans celui-ci. La fonction RANG retourne le rang dans la suite ordonnée des valeurs du tableau indépendamment des indices de celui-ci.

    J'ai pas envie de donner trop vite la solution, car elle me semble assez simple ...

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gia,
    Citation Envoyé par e-ric Voir le message
    J'ai pas envie de donner trop vite la solution, car elle me semble assez simple ...
    Ça tombe bien, le but du forum n'étant pas de donner la solution clés en main.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Salut

    Je vois que Droggo veille... Là, je ne me suis pas fait prendre les doigts dans le pot de confiture

    Sinon, j'ai cherché ce soir, si on tient compte des doublons (i.e. des ex-aequo s'il s'agit de notes), c'est un peu plus compliqué.

    J'ai une solution qui met en oeuvre quelques boucles mais la complexité est en N^2, c'est pas top mais sur des petits tableaux, c'est pas méchant.

    J'ai une autre solution qui permet d'utiliser la recherche séquentielle d'Epitouille.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Sans donner la réponse, sommes-nous d'accord que notre fonction devrait ressembler à quelque chose de ce genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
      tableau: array[byte]of double;
     
    function RANG(const n: double; const a, b: byte; const c: boolean): byte;
    { Rang de n, dans la partie du tableau allant de l'indice a à l'indice b. Le
      quatrième paramètre est l'ordre du tri préalable : croissant ou décroissant. }
    begin
    end;
    Ce serait peut-être mieux de passer le tableau en paramètre, mais j'ai essayé dans un premier temps de rester le plus près possible de l'en-tête de la fonction originale.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Pourquoi pas ? Ceci dit, il ne faut pas le contexte d'utilisation d'Excel où la grille est le support de données et celui d'un programme ou le tableau est un objet parmi d'autre, pour cette raison, j'ai passé le tableau en paramètre.

    La solution que j'ai trouvée ne fait intervenir que des tableaux, tous de même dimension, on pourrait utiliser une structures un peu plus raffinée.

    J'aimerais bien savoir ce qu'en pense Bayangam, pas très bavard le gars ...

    @+

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Goa,
    Citation Envoyé par e-ric Voir le message
    J'aimerais bien savoir ce qu'en pense Bayangam, pas très bavard le gars ...

    @+
    Il se taira probablement tant qu'il n'aura pas obtenu
    Citation Envoyé par bayangam Voir le message
    soit la fonction dans le langage Pascal qui retourne la position d'un élément d'un tableau de réels
    Citation Envoyé par bayangam Voir le message
    soit le code source correspondant.
    (ce qu'on peut qualifier de pléonasme, car, ne s'agissant pas d'une fonction standard, comment lui donner la fonction sans le code source ?)

    donc tant que personne n'aura fait son travail à sa place, c'est clair dans sa demande :
    Citation Envoyé par bayangam Voir le message
    Je cherche quelqu'un qui peut m'aider en me donnant
    c'est ce qu'il appelle être aidé. Sa conception ne correspondant pas à l'esprit de DVP, il risque d'attendre longtemps.
    Si les cons volaient, il ferait nuit à midi.

  10. #10
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par droggo Voir le message
    Sa conception ne correspondant pas à l'esprit de DVP, il risque d'attendre longtemps.
    Sans compter qu'on ne connaît toujours pas le type exact du tableau.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. Retourner la ligne d'un élément d'un tableau HTML
    Par Jehuty57 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2010, 20h00
  2. position d'un élément dans une liste
    Par john491 dans le forum Général Python
    Réponses: 8
    Dernier message: 05/05/2006, 13h13
  3. [Javascript] Récupérer la position d'un élément
    Par djflex68 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/04/2006, 10h13
  4. [XSLT]retourner la position
    Par totoen dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 07/09/2005, 14h36
  5. [XPath] Position d'un élément
    Par ovh dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 07/04/2003, 15h26

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