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 :

Classe d'entiers tres grands


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut Classe d'entiers tres grands
    Salut les developpeur,je suis etudiant en 3eme année ingénierie informatique.
    notre prof de c++ nous a demander d'inplementer une classe representant des entier tres grand non supportée par des int qui est represente sur 32 bits,par exemple des nombres du genre (987321412365974219562132),un nombre de 24 chiffre.

    Cette classe,je doit la realiser heritante d'une classe tableaux dynamique que j'ai deja realiser qui contient entre autre un constructeur ,des methode telle que inserer,supprimer ,rechercher...

    cette classe je vais l'appeler mpi(multiple precision integer).
    je dois realiser un constructeur pour la classe qui construira un entier long ,par exemple
    mpi x(987321412365974219562132);

    je doit réaliser les opérateurs suivants:
    mpi operator+(mpi& );
    mpi operator-(mpi& );
    mpi operator*(mpi& );
    mpi operator/(mpi& );

    ma question est comment stocker le nombre 987321412365974219562132 dans la variable x en utilisant des tableaux dynamiques?
    et puis comment je peut effectuer les operations voulus sur des objet mpi?
    merci d'avance pour vos réponse.

  2. #2
    Membre actif
    Inscrit en
    Mars 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 29
    Par défaut
    J'ai aussi le meme soucis je cherche aussi à realiser une telle class je pense que c'est un peu difficile ,, mais on attend toujours des reponses -_-

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 35
    Par défaut
    Pour résumer l'essence de ce qui a été dit sur le post de Devaben :

    Tu ne peux pas construire a partir d'un grand entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mpi x(987321412365974219562132);
    Par contre, tu peux le construire a partir de la chaine de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mpi x("987321412365974219562132");
    Ensuite, en découpant la chaine en sous chaine,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "987321412365974219562132" -> "9873" + "21412" + "36597" + "42195" + "62132"
    tu pourras convertir ces sous chaines en int (car la chaine est suffisamment petite pour être représenter par un int). Pour cela, tu peux utiliser std::istringstream. Il reste a remplir ton "tableau dynamique" avec ces entiers.

    Pour les opérations +, *, ... : implémente les opérateurs adaptees : operator+(...), operateur*(...), ...

    Une remarque : pourquoi faire une dérivation du tableau dynamique. Il est plus simple que ta classe mpi contiennent un tableau d'entier.

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Et je me répéte... pourquoi découpé? Tu remplis directement tes cases avec les cases de ta chaine de caractères, c'est direct... Ah noté que il n'a jamais était question d'entiers négatifs... Il vous est précisé explicitement dans l'énoncé que c'est une classe d'unsigned ?

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 35
    Par défaut
    salut je suis de retour ,donc selon vous "Solkien", je dois saisire le grand nombre et le programme la lis comme chaine de caractere,donc mon costructeur sera en quelque sorte comme cela(juste le debut):
    mpi::mpi (char* c)
    {
    }
    Et pour le decoupage du nombre:
    pour stocker ce nombre il me faut allouer un tableaux de 5 case c-à-dire 5 int,
    "987321412365974219562132" -> "9873" + "21412" + "36597" + "42195" + "62132"?
    mais je n'ai pas comprit comment faire cela en utilisant istringstream,expliquer moi plus s'il vous plais.
    pour l'heritage c'est le prof qui nous l'a exigé,je pense il veut savoir si on a bien metriser ses technique.

    pour repondre à Goten,oui on nous a précisé de travailler avec des unsigned int,et j'ai pas compris l'idee de (Tu remplis directement tes cases avec les cases de ta chaine de caractères, c'est direct).
    maerci pour vos reponse.

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    http://www.developpez.net/forums/m4164619-15/


    Le principe c'est qu'il faut que chaque case de ton tableau contienne un int n tel que :

    0<=n<=9

    Ainsi chaque cases de ton tableau représente un chiffre de ton long long nombre.

Discussions similaires

  1. utilisation d'entier de tres grande taille
    Par HoB dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2007, 14h19
  2. Quel langage pour manipuler des entiers très longs ?
    Par mis_dj dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 10/05/2006, 21h12
  3. Taille de tableau tres tres grand (BCB6)
    Par cquadjul dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/04/2006, 08h48
  4. Texte très grand
    Par jobe dans le forum Mise en forme
    Réponses: 2
    Dernier message: 15/01/2006, 20h45
  5. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40

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