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 :

passer une matrice de structure en parametre avec c++


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 0
    Points
    0
    Par défaut passer une matrice de structure en parametre avec c++
    Salut c'est pour savoir comment on fait pour passer une matrice de structure( enfin un tableau a deux dimensions ) en paramètre d'une fonction pour l'initialiser au clavier.je suis vraiment bloquer . Merci d'avance

    //---------------------produit.h----------
    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
     
    #ifndef PRODUIT_H
    #define PRODUIT_H
    struct produit
    {
    char Code[25];
    char Nom[20];
    char Prenom[20];
    char Categorie[35];
    int prix;
    int quantites;
    };
    int L,C;
    produit TP[L][C];
    void menu(void);
    void creation_Produit(produit,int ,int );
    void afficher_Produit(produit,int,int);
    void trie_Prix(produit,int,int);
    void recherche_Produit(produit,int,int);
    void trace_histogramme(produit,int,int);
    #endif
    //--------------------main.cpp

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    //--------------------main.cpp
     
     
    #include <iostream>
    #include "produit.h"
    #include <unistd.h>
     
    unsigned int microseconds;
    using namespace std;
     
    void menu(void){
        system("clear");
        usleep( 100000 );
        cout<<" \t\t\t Entre le nombre de ligne de la matrice "<<endl;
        do{
             cout<<" \t\t\t\t\t\t"; cin>>L;
             if (L<0 )
             {
                system("clear");
                usleep( 100000 );
                cout<<" \t\t\t Le nombre de ligne de la matrice ne  doit jamais etre plus petit ou egale a 0(zero) "<<endl;
             }
        }    while(L<0);
        system("clear");
        cout<<" \t\t\t Entre le nombre de colonne  de la matrice "<<endl;
        do{
             system("clear");
             cout<<" \t\t\t\t\t\t"; cin>>C;
             if (C<0)
             {
                cout<<" \t\t\t Le nombre de colonne de la matrice ne doit jamais etre plus petit ou egale a 0(zero)"<<endl;
             }
        } while(C<0);
     
        int chx=0;
     
    do{
        system("clear");
        cout<<" \t\t---------------MENU PRODUITS----------"<<endl;
        cout<<" \t\t\t 1- Remplissage"<<endl;
        cout<<" \t\t\t 2- Afficher tableau Produit"<<endl;
        cout<<" \t\t\t 3- Trie croissant sur tableau Produit en fonction de la prix"<<endl;
        cout<<" \t\t\t 4- Tableaux  des produite dont le prie et superieur a la quantite  "<<endl;
        cout<<" \t\t\t 5- Affichage du tableau Produit deja trier"<<endl;
        cout<<" \t\t\t 6- Recherche un Produit"<<endl;
        cout<<" \t\t\t 5- Histogramme des moyennes"<<endl;
        cout<<" \t\t\t 0- Quitter"<<endl;
        cout<<" \t\t\t\t\t ";cin>>chx;
        switch(chx){
            case 0 : cout<<"\t\t\t\tVoulez-vous vraiment quitter cette page ?O/N"<<endl;
                 char q;
                 cin>>q;
                 if(q=='o' or q=='O') {
                     cout<<"\t\t\tVous venez de quiter"<<endl<<endl<<endl;
                 }
                 else{
                     cout<<"\t\t\tVous venez de renonces a quitter la page"<<endl<<endl<<endl;
                     chx=10;
                     }
            case 1 : creation_Produit(TP,L,C);
                break;
            case 2 : afficher_Produit(TP,L,C);
                break;
            case 3 : trie_Prix(TP,L,C);
                break;
            case 4 :afficher_Produit(TP,L,C);
                break;
            case 5 : recherche_Produit(TP,L,C);
                break;
            case 6 : trace_histogramme(TP,L,C);
                break;
            default :
                cout<<"\t\t Veiller revoir votre choix"<<endl;
                system("clear");
                break;
        }
     
        if(chx==0)break;
     }while(1);
    }
     
     
    int main(void){
        menu();
        return 0;
    }

    //------fonctions.cpp

    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
     
     
    //------fonctions.cpp
     
    #include "produit.h"
    #include <iostream>
    #include <unistd.h>
     
     
    /*---------------initialisation du tableau--------------------------*/
    void creation_Produit(produi *TP,int L,int C){
     
    }
    /*----------------affichager -----------------------------*/
    void afficher_Produit(produi TP,int L,int C){
     
    }
    /*-----------------trie daser sur le prix-------------------*/
    void trie_Prix(produi *TP,int L,int C){
     
    }
    /*------------------recherche de produit daser sur la categorie-----*/
    void recherche_Produit(produi TP,int L,int C){
     
    }
    /*------------------histogramme--------------------------------------*/
    void trace_histogramme(produi TP,int L,int C ){
     
    }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 562
    Points : 7 628
    Points
    7 628
    Par défaut
    Bonjour,

    On peut presque tout passer en paramètre mais un tableau brut ne peut pas être passé par valeur.
    Ligne 14, produit TP[ L][ C]; est une ligne qui n'a pas de sens en C++. gcc tolère cette écriture et produit ici un tableau de 0 x 0 éléments, ce qui n'est pas beaucoup mieux.
    Et, on ne doit jamais mettre des définitions d'instance dans un fichier d'entête.

    Tu parles d'une matrice, alors pourquoi ne pas créer un objet Matrice. Il pourra être lui passé en paramètre à des fonctions par ( Matrice<produit> const& TP ) ou par ( Matrice<produit> & TP ).
    Avec la Matrice suivante, ton code ne sera plus du C et commencera à être du C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    template<typename T> class Matrice {
    public:
       Matrice( size_t L , size_t C ) : L(L) , C(C) , data(L*C) {}
       T const* operator[]( size_t ligne )const { return data.data() + ligne*nbColonnes; }
       T* operator[]( size_t ligne ) { return data.data() + ligne*nbColonnes; }
       const size_t L;
       const size_t C;
    private:
       std::vector<T> data;
    };

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    on na pas encore toucher au class .on na fait pour l'instant que les structure

  4. #4
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    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.

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 562
    Points : 7 628
    Points
    7 628
    Par défaut
    Tu verras plus tard que les class et les structures c'est finalement la même chose.
    On peut aussi utiliser les pointeurs (si tu les as vus) pour émuler des tableaux de tailles non constante, mais ça complique inutilement les choses.
    Si ton tableau brut a des dimensions qui sont des constantes connues de compilation, il y a une solution simple (mais là encore ça sera du C et pas du C++). On dirait que ton cours ne parle que de C qui pourtant contient beaucoup de mauvaises habitudes qu'il te faudra perdre en C++.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/11/2009, 11h28
  2. [JAVA/JAVASCRIPT]passer une url de fichier en parametre
    Par attwad dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/08/2007, 16h00
  3. passer une date de naissance comme parametre via servlet ?
    Par haifa28 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 28/03/2007, 13h10
  4. Réponses: 4
    Dernier message: 15/01/2007, 01h13
  5. Passer une matrice comme paramètre d'une fonction
    Par Rniamo dans le forum Langage
    Réponses: 8
    Dernier message: 16/07/2006, 21h55

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