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 matrice générique


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Par défaut classe matrice générique
    salut tous le monde
    je travail sur un mini projet en c++ je doit déclarer une classe matrice générique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Template < typename T> classe matrice{
    int n; 
    int m;
    T** t;
    ...
    };
    je doit normalement laisser à l'utilisateur le soin de remplir la matrice en question pour pouvoir effectuer des opération élémentaires sur l'ensemble des matrices
    questions
    1-est ce que j'ai la possibilité de remplir une même matrice avec des cases de types différents?
    2-puis est ce que je doit imposer à l'utilisateur de choisir un type donné pour remplir les cases de la matrice?
    je me coince sur ça si quelqu'un me guide je lui serai très connaissant
    cordialement

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    1- si ta matrice est un T**, tu pourras y stocker des... T
    2- j'ai pas compris
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Par défaut
    bonjour
    justement la matrice doit être alloué dynamiquement dans le constructeur et doit contenir des éléments de type T ma question est ce qu'il y a un moyen pour que la matrice contient des éléments de type différents des entier et des réel en même temps par exemple.
    puis après dans la fonction main je doit faire un menu pour que l'utilisateur saisie une matrice et faire avec des opérations comme le déterminant.. donc est ce que je doit lui dire qu'il faut travailler sur un ensemble donnés R(réel) ou bien N(entier)..
    merci

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 641
    Par défaut
    Salut,
    Citation Envoyé par memoire.ph Voir le message
    bonjour
    justement la matrice doit être alloué dynamiquement dans le constructeur et doit contenir des éléments de type T ma question est ce qu'il y a un moyen pour que la matrice contient des éléments de type différents des entier et des réel en même temps par exemple.
    Non... du moins, pas directement... (*)

    De la facon dont tu pars, tu peux avoir une matrice d'entier en écrivant Matrice<int> ou une matrice de réels en écrivant Matrice <double>, par exemple, mais tu ne peux pas avoir une matrice contenant des entiers et des réels, simplement, parce que entier et réels sont des types différents

    Il n'y aurait, de toutes manières, pas beaucoup de sens à vouloir créer une matrice (au sens mathématique du terme) dont les éléments seraient de type hétérogènes
    puis après dans la fonction main je doit faire un menu pour que l'utilisateur saisie une matrice et faire avec des opérations comme le déterminant.. donc est ce que je doit lui dire qu'il faut travailler sur un ensemble donnés R(réel) ou bien N(entier)..
    merci
    En théorie, le calcul du déterminant d'une matrice est une fonction membre de la matrice, et s'effectue sur le type choisi pour représenter les donnée de celles-ci

    Si donc, tu as, dans ton code quelque chose ressemblant à
    fournira un résultat cohérent avec des données de type int, et si tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Matrice<double> matDouble;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matDouble.determinant();
    fournira un résultat cohérent avec des données de type double.

    Si l'utilisateur doit pouvoir choisir à l'utilisation entre le fait d'utiliser une matrice d'entier ou une matrice de double, il faut qu'il y ait une classe de base non template pour matrice<T>, utiliser un pointeur sur cette classe de base et créer dynamiquement la classe correcte en fonction du choix de l'utilisateur, car il n'y a aucune relation entre Matrice<int> et Matrice<double>.

    Ainsi, tu pourrais avoir quelque chose comme
    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
    class MatrixBase
    {
        public:
            MatrixBase(/* liste d'arguments potentiels */);
            virtual ~MatrixBase();
            /* more pure virtual functions */
    };
    template <typename T>
    class Matrix :public MatrixBase
    {
        public:
            /* virtual functions implementation */
    };
    int main()
    {
        MatrixBase * ptr;
        swirch(choice)
        {
            case(choiceForInt);
                ptr = new Matrix<int>(/* parametres */);
                break;
     
            case(choiceForDouble);
                ptr = new Matrix<double>(/* parametres */);
                break;
        }
        //use of ptr;
        delete ptr;
        return 0;
    }
    Mais tu seras limité à l'interface de MatrixBase, qui ne peut pas fournir de fonction dont le type de retour (ou un des arguments) dépendrait du fait que tu travailles avec une matrice d'entiers ou avec une matrice de réels.

    Par contre, rien ne t'empêche de créer des fonctions surchargées (ou des foncteurs templates ) qui te permettent de travailler avec des matrices d'entiers ou avec des matrices de réels, en fonction de la situation

    (*) J'ai volontairement écarté de mon explication la possibilité du recours à boost::any ou classe similaire permettant de travailler avec des types hétérogènes parce que les calculs effectués sur ta matrice devront, de toutes manières, se baser sur la présomption que tu travailles avec des types identiques
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 24
    Par défaut
    je vous remercie Mr Philippe pour le temps et l'effort que vous avez accorder à mon sujet

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/05/2007, 19h46
  2. template matrice générique
    Par troussepoil dans le forum Langage
    Réponses: 7
    Dernier message: 12/03/2007, 11h45
  3. Réponses: 15
    Dernier message: 21/01/2007, 22h47
  4. aide classe matrice
    Par ba10 dans le forum C++
    Réponses: 8
    Dernier message: 17/05/2006, 08h10
  5. classe date générique ?
    Par lili_bzh dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/09/2004, 10h59

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