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 :

une recherche qui renvoie un tableau d'indices


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut une recherche qui renvoie un tableau d'indices
    bonjour:
    j'ai crée une classe pour gérer les annonces immobiliéres {ajout d'annonce,recherche d'annonces selon un critére...}
    j'ai un probleme avec une procédure qui doit me renvoyer un tableau d'indices des annonces en fonction de nombre de pieces demandé j'ai fait ca mais ca marche pas je sais pas c'est quoi le probléme:
    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
    //recherche en fonction de nombre des pieces
     
    void rech1( Annonce Tab[MAXANNONCE],int nb,Annonce rep[MAXANNONCE],int& nbRep, int nbPiece){
        nbRep=0;
     
        for(int i=0;i<nb;i++){
          while((Tab[i].getnbPiece())==nbPiece){
                rep[nbRep]=i;
                nbRep++;
            }
        }
     
     }
    et pour la tester dans le main j'ai fait ca :
    int main(){
    int nbPiece;
    int nb;
    Annonce Locations[MAXANNONCE];
    int rep[MAX];
    int Rep;
    cout<<"entrez le nombre de pieces que vous voulez"<<endl;
    cin>>nbPiece;
     rech1( Locations, 10, rep,nbRep,  nbPiece);
     
    for(int i=0;i<nb;i++){
      Locations[rep[i]].affiche();
    }
    return 0;
    }
    avec affiche() qui est une methode de la classe Annonce qui affiche les annonces.
    voila si quelqu un peut m' expliquer pourquoi ca marche pas quand je lance la recherche merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    je rectifie en fait pour la déclaration de la procédure recherche je me suis trompée donc je corrige c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void rech1( Annonce Tab[MAXANNONCE],int nb,int rep[MAXANNONCE],int& nbRep, int nbPiece);
    c'est int au lieu d'Annonce pour le type de tableau rep[].
    mais ca marche tjrs pas

  3. #3
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    Heu...tu a une erreur de compilation ou le programme ne fait pas ce que tu veux ?

    dans le premier cas, donne cette erreur.

    d'autre part, quelle est la déclaration de Annonce ? on peut la voir

    d'autre part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           while((Tab[i].getnbPiece())==nbPiece){
                rep[nbRep]=i;
                nbRep++;
            }
    Tu a là une belle boucle sans fin:
    en effet, tu ne modifie pas i à l'interieur de la boucle donc si ta condition est vraie une fois, elle est vraie autant de fois que tu veux
    sauf qu'ici, tu finis par sortir avec un dépassement d'indice de rep.

    enfin, met des "//" avant tes commentaires, sinon ton code est illisible.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    la déclaration de la classe Annonce est ca:
    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
    class Annonce
    {
    private:
     
        int _numAnn;
        string _Type;
        int _nbPiece;
        float _Surf;
        float _Loyer;
        float _chaMen;
     
     
    public:
        Annonce(int numAnn=0,string Type= "inconnu",int nbPiece=0,float Surf=0,float Loyer=0,float chaMen=0);
        void affiche()const;
        //accesseurs
        int getnbPiece();
        float getLoyer();
        string getType()const;
        float getSurf()const;
        float getCharge()const;
    };

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    et le main c'est ca:
    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
    #include "Annonce.h"
     
    Annonce Locations[MAXANNONCE];
    int nbLoc=0;
    int app;
    int mais;
    int rep[MAXANNONCE];
    int nbRep;
    int nbP;
    using namespace std;
    int main(){
     
        Annonce Ann1(77,"appartement",3,505,200,840);
        Annonce Ann2(2,"maison",1,55,250,50);
        Annonce Ann3(5,"maison",12,50,320,80);
        Annonce Ann4(44,"appartement",3,505,500,90);
        Annonce Ann5(754,"maison",4,45,650,50);
        Annonce Ann6(11,"appartement",2,75,730,680);
        Annonce Ann7(930,"maison",6,100,860,570);
        Annonce Ann8(62,"appartement",5,140,1000,250);
        Annonce Ann9(4998,"appartement",3,49,1280,890);
        Annonce Ann10(489,"maison",8,90,1300,555);
     
        Locations[0]=Ann1;
        Locations[1]=Ann2;
        Locations[2]=Ann3;
        Locations[3]=Ann4;
        Locations[4]=Ann5;
        Locations[5]=Ann6;
        Locations[6]=Ann7;
        Locations[7]=Ann8;
        Locations[8]=Ann9;
        Locations[9]=Ann10;
     
    /*
        affichage(Locations,10);
        ajoutAnn(Locations,5);
        cout<<"le nombre d'appartement est "<<endl;
         app=cptAppart( Locations,10);
         cout<<app<<endl;
         cout<<"le nombre de maisons est "<<endl;
         mais=cptMaison(Locations,10);
         cout<<mais<<endl;
         ajoutAnn2(Locations,5);*/
     
         cout<<"entrer un nombre de pieces"<<endl;
         cin>>nbP;
        rech1(Locations,10, rep, nbRep, nbP);//une recherche qui renvoie les indices des annonces qui ont le meme nombre de pieces que nbP
        for(int i=0;i<10;i++){
            Locations[rep[i]].affiche;//affiche les annonces qui ont le meme nb de pieces que nbP
        }
     
         return 0;
    }
    mais à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Locations[rep[i]].affiche;//affiche les annonces qui ont le meme nb de pieces que nbP
    il m'affiche ca comme message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C: statement cannot resolve address of overloaded function
                     === Build finished: 1 errors, 0 warnings ===|

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    à vrai dire j'ai pas bien compris le fait que ca soit une boucle infinie comme tu dis si tu peux m'expliquer stp^^merci

  7. #7
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    houlà, il y a plein de problèmes dans ton code.

    bon, pour le code que tu signale essaie de remplacer ta ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Locations[rep[i]].affiche();
    sinon, pour la boucle c'est simple:

    voici ta boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while((Tab[i].getnbPiece())==nbPiece){
                rep[nbRep]=i;
                nbRep++;
            }
    lorsque l'on entre dans le while, on vérifie la condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Tab[i].getnbPiece())==nbPiece
    supposons qu'elle soit vraie.

    dans ce cas, on entre dans la boucle. on execute les instruction à l'interieur c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                rep[nbRep]=i;
                nbRep++;
    puis on revient au début et on revérifie la condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Tab[i].getnbPiece())==nbPiece
    mais celle ci est encore vraie donc on entre à nouveau dans la boucle, etc... jusqu'à ce qu'il y aie un dépassement d'indice et que tout plante.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2011, 13h44
  2. faire une fonction qui renvoie un tableau
    Par ghosty04 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2009, 15h42
  3. appel d'une fonction qui renvoie un tableau
    Par yokou dans le forum VB.NET
    Réponses: 1
    Dernier message: 08/01/2008, 21h52
  4. Réponses: 3
    Dernier message: 13/07/2006, 17h56
  5. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04

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