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 :

Implémentation d'un algorithme foireuse


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 217
    Par défaut Implémentation d'un algorithme foireuse
    Bonjour,

    Je fait un petit programme cryptant par courbe elliptique. Dans celui-ci je dois implémenter l'exponentiation rapide. C'est un algo simple mais j'ai réussi à me planter et je ne vois pas où ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        template<typename T>
        std::pair<T, T> QuickExponentiation(T p, T a, T e, std::pair<T, T> point)
        {
            if( 1 < e)
            {
                if(p % 2 ==0)
                    return AddPoints(p, a, QuickExponentiation(p, a, e/2, point), QuickExponentiation(p, a, e/2,point));
                else
                    return AddPoints(p, a, AddPoints(p, a, QuickExponentiation(p, a, (e-1)/2,point), QuickExponentiation(p, a, (e-1)/2, point)), point);
            }
            return point;
        }
    La fonction AddPoints() fonctionne (vérifié), voici son prototye:
    template<typename T>
    std::pair< T, T> AddPoints(T p, T a, const std::pair<T, T>& firstPoint, const std::pair<T, T>& secondPoint);

    Votre aide est la bienvenue.
    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Bonjour khazna,

    Dans quelle mesure "ça ne marche pas", comment se comporte la fonction ?

    Cdt.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 217
    Par défaut
    Par exemple, lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    QuickExponentiation(29, 1, 2, std::pair<int, int>(28, 12))
    ça me sort le point (7, 25) alors qu'en faisant l'addition avec AddPoints() ça me sort le bon résultat (-2, 22).
    A ne rien y comprendre

  4. #4
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Ton "e / 2" est certainement passé en tant qu'entier à QuickExponentiation. C'est vraiment ce que tu veux ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 217
    Par défaut
    Oui, je crois

  6. #6
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Euh.. J'ai peut être trouvé !!!

    La fonction AddPoint prend comme paramètres des références...

    std::pair< T, T> AddPoints(T p, T a, const std::pair<T, T>& firstPoint, const std::pair<T, T>& secondPoint);

    Or tu lui envoies un retour de fonction !!!

    Utilise des variables tempons et revérifie...

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

Discussions similaires

  1. Implémentation d'un algorithme de FFT.
    Par Mp-X. dans le forum Caml
    Réponses: 28
    Dernier message: 02/08/2009, 15h55
  2. Implémentation de l'algorithme ESPRIT
    Par elhaoud dans le forum Signal
    Réponses: 5
    Dernier message: 19/05/2008, 20h45
  3. Implémentation de l'algorithme de kmeans
    Par kevin2008 dans le forum C++
    Réponses: 0
    Dernier message: 18/04/2008, 11h29
  4. Implémentation de l'algorithme FCM en C
    Par hoolaka dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 11/02/2008, 22h57
  5. Réponses: 1
    Dernier message: 07/03/2007, 09h28

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