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

Langage Pascal Discussion :

Erreur dans l'utilisation de SWAP


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Erreur dans l'utilisation de SWAP
    Bonjour,
    Dans une de mes procédures, j'utilise la fonction SWAP, mais le programme me donne toujours l'erreur suivante lorsque j'essaie de le compilier : "improper arguments list for OVERLOADed id".

    Si je comprends bien, c'est que je ne passerais pas bien mes arguments?? Mais pourquoi il me donne toujours l'erreur au SWAP? Et je ne suis pas certaine de bien comprendre ce message...

    Voici le code de ma procédure:

    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
    Procedure TriRapide(var a: tab; n: integer);
     
     Procedure Q(lb, ub : integer);
       Var i,j : integer;
           pivot : integer;
     
       Begin
       If ub > lb then
          begin
          j := lb - 1;
          pivot := a[ub];
          For i := lb to ub do
              if a&#91;i&#93; <= pivot then
                 begin
                 j &#58;= j + 1;
                 if i <> j then
                    swap&#40;i,j&#41;;
                 end;
          Q&#40;lb, j - 1&#41;;
          Q&#40;j + 1, ub&#41;;
          end;
       end;
     
    Begin
    Q&#40;1,n&#41;
    end;
    Et l'endroit où je l'appelle dans mon bloc principal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     TriRapide&#40;liste,nb&#41;;
    Est-ce que quelqu'un saurait de quoi il s'agit??

    Merci

    **********
    Edité par pascail : rajout de "résolu"
    "Vraiment, on est obligé de faire tout sois même ..."

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Allo à tous...

    J'ai trouvé mon erreur... alors vous pouvez laisser faire cette question.

    J'avais juste oublié d'écrire ma procédure SWAP...

    Bye

  3. #3
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 463
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 463
    Points : 4 305
    Points
    4 305
    Par défaut
    Apparemment la procédure swap servirait à intervertir les valeurs des variables passées en paramètre. Cette procédure n'est pas implémentée directement dans turbo pascal, donc soit tu as créé une procédure swap qui échange deux valeurs, soit tu utilises un compilateur différent de turbo pascal. Dans ce dernier cas, tu peux essayer d'utiliser une procédure d'échange de valeurs que tu crées. Bon comme je suis très sympathique et de bonne humeur, je te la prête mais il faudra que tu me la rendes :)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure echange&#40;var a,b&#58;integer&#41;;
    var c&#58;integer;
    begin
    c&#58;=a;
    a&#58;=b;
    b&#58;=c;
    end;
    En revoyant ton code, j'ai remarqué d'autres erreurs. Notamment dans ta boucle for, où tu sembles modifier la valeur de i. Sache que tu ne peux pas modifier la valeur d'un indice dans une boucle itérative inconditionnelle (= boucle for). Donc si tu modifie i dans la boucle, ton compilateur risque de gueuler un peu !!! ( turbo pascal, si je me souviens bien, ignore les modifications de l'indice )
    Voilà, en espérant t'avoir aidé ( et pas avoir répondu à côté de la plaque !! )
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 43
    Points : 70
    Points
    70
    Par défaut
    Histoire de titiller un peu wormful_sickfoot on va dire qu'on est pas obligés d'utiliser une variable temporaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure &#40;var a,b &#58; integer&#41;;
    begin
      a&#58;=a+b;
      b&#58;=a-b; &#123;a+b-b=a&#125;
      a&#58;=a-b;  &#123;a+b-a=b&#125;
    end;
    Et comme moi aussi je suis super sympathique tu peux utiliser cette procédure

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 463
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 463
    Points : 4 305
    Points
    4 305
    Par défaut
    OUI OUI !! ça marche aussi très bien, mais bon il faut avouer qu'elle est plus dure à comprendre que la mienne.... lol
    Faîtes comme vous voulez ( mais la mienne est mieux !!! non je blague )
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 43
    Points : 70
    Points
    70
    Par défaut
    Non c'est la mienne qui est la plus mieux d'abord, na !


  7. #7
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Eh eh !

    En fait, ton erreur vient du fait que la procédure Swap existe déjà dans le language pascal, et la redéfinir n'est pas une bonne idée... (En voyant "overloaded", il faut se dire qu'une procédure a été surchargée à qq part : mauvais si c'est pas volontaire...)

    Sinon, pour en revenir à la bataille de Swap !

    Wormful utilise une variable temporaire, certes. Mais il n'effecteu que des opérations simple : le transfert de données, ce que le processeur effectue avec une facilité certaine. De ton côté Kael, tu n'utilises pas de variable en plus : c'est bien si la place est très limitée en mémoire. Mais je doûte que tu sois à 2 ou 4 octets près... Par contre, tu te sers aussi de trois affectations, mais en plus, tu ajoute 3 additions et 2 compléments à deux (pour les changement de signes).

    Il me semble donc évident que la procédure de Wormful est plus performante, dès que l'on ne coure pas après 2 octets de mémoire...

    CQFD

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ouep... j'pensais effectivement que la fonction swap était déjà implémenté dans Pascal... mais ce n'était pas le cas.

    J'ai donc défini ma fonction swap... et pour trancher la question, j'ai utilisé la procédure avec variable temporaire!! Plus facile à comprendre ...

    Merci bien

  9. #9
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 463
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 463
    Points : 4 305
    Points
    4 305
    Par défaut

    J'ai gagné !!! Bon HDD34 a raison ( encore une fois !! ), et d'ailleurs si on traduit le code en assembleur, on remarque que ma procédure prend moins d'instructions et manipule moins les registres et les accès mémoire, elle est donc aussi plus rapide... Voilà pour la partie scientifique (ahum... )
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  10. #10
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 43
    Points : 70
    Points
    70
    Par défaut
    Très bien je m'incline de toute façon je pensais bien que Wormfull me surpasse

    Mire tu peux mettre le tag [résolu] en éditant ton message puisque le prob est résolu (d'où le nom du tag)

  11. #11
    Membre actif

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 107
    Points : 279
    Points
    279
    Par défaut
    Vous faites la gerre des octet maintenant, a coup d'additions, de swap en acier, de lignes asm, et d'octets à épines; sur le forum pascal, et je n'étais même pas invité à la busherie !!! Mais alors, vous avez oubliés le modérateur !!!

    Bon, sinon, je ne trouve pas ça trés sérieux, et plus niveau maternelle, que Ce1, les derniers messages que j'ai lu ! Merci de ne pas faire de guerre ( en plus sans que j'y participe ) sur le forum pascal

    Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

  12. #12
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 463
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 463
    Points : 4 305
    Points
    4 305
    Par défaut
    Ne t'inquiète pas super-modo, ce n'est qu'une guerre pacifique sans dommage collatéral !! Et en plus, j'avais l'aval de HDD34 donc je ne pouvais que gagner lol ! Je blague évidemment ...
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  13. #13
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    lol

    Citation Envoyé par mire
    j'pensais effectivement que la fonction swap était déjà implémenté dans Pascal... mais ce n'était pas le cas
    Erreur ! La fonction Swap existe bel et bien dans le lanngage Pascal, mais elle ne fait pas ce que l'on pourrait croire, d'où la confusion.

    Swap, en rélaité, interchange les octets de poids faible et de poids fort. S'agirait de ne pas se tromper.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] erreur dans l'utilisation de if, elseif, else imbriqués
    Par Maude_84 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2015, 12h41
  2. Erreur dans l'utilisation d'ActionWebService
    Par NacedoChristo dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 25/03/2010, 16h37
  3. Erreur dans l'utilisation de générique
    Par jybux dans le forum C#
    Réponses: 2
    Dernier message: 21/02/2010, 13h03
  4. Réponses: 7
    Dernier message: 29/04/2007, 11h37
  5. VBA-Excel Erreur dans syntaxe requete en utilisant ADO
    Par rafnt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2006, 15h23

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