C++ probleme

Résolu/Fermé
chevalier_25 - 26 déc. 2008 à 21:23
 chevalier_25 - 27 déc. 2008 à 22:57
salut,
c++
je veut programmer une fonction affichage qui permet d'afficher un tableaux son donner le nombre de c'est elements(les elements du tableaux son des objets)
j'ai essayer ca mais ca na pas marcher :
void afficherPers(Personne *t){
int i=0;
cout<<"\n++++++++++++++affichage du Tableaux+++++++++++++++\n";
while (t!=NULL){
t[i].afficher();
i++;
}
cout<<"\n++++++++++******Fin de la affichage+********+++++++++\n";
}

9 réponses

Je n'irais pas jusqu'à comprendre tout le code... car
  while (t != NULL)
  {
    t[i].afficher();
    i++;
  } 

cette boucle ne peut fonctionner, car si par malheur, on rentre dedans... on n'en sort pas !!!
0
chevalier_25
27 déc. 2008 à 18:20
c'est normale parceque j'ai pas posser tout le code ,mais mon prob c'est que je veut programmer une fonction qui peut afficher un tableaux d'objets (les elements du tableaux son des objets) son savoir le nembre des elements du tableaux passé en paramétre ,
et merci d'avance
0
Lorsque l'on passe un tableau en paramètres, il y a 2 solutions pour que la fonction puisse s'y retrouver:
- passer aussi le nbre d'éléments du tableau,
- ajouter un élément particulier au tableau qui permettra à la fonction de détecter la fin du tableau; effectivement s'il s'agit d'un tableau de pointeurs, il est logique d'ajouter un élément NULL (d'où le test: while (t) ).
0
chevalier_25
27 déc. 2008 à 21:27
j'ai un tableaux des pointeurs je vais essayer d'ajouter un NULL a la fin dutableaux et voir si ca matche
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chevalier_25
27 déc. 2008 à 21:38
et si il sagit d'un tableaux d'Objets quesque je vais ajouter pour detecter la fin ?
0
class Objet
{
  ...
};

void fonction (Objet* tt[])
{
  int i = 0;
  while (tt[i])
  {
    ...
    i++;
  }
}

int main ()
{
  Objet* a = new Objet;
  Objet* b = new Objet;
  Objet* t[3];
  t[0] = a;
  t[1] = b;
  t[2] = (Objet*)0;  // Ajout d'un élément NULL

  fonction (t);

  return (0);
}
0
chevalier_25
27 déc. 2008 à 22:04
tu peut mexpliquer ca t[2] = (Objet*)0;
et merci
0
On peux écrire: 't[2] = 0;' le compilateur ne doit pas râler car c'est juste, mais il est plus correct d'écrire 't[2] = (Objet*)0;' dans les deux cas on donne la valeur zéro (ou NULL) au 3ème élément du tableau/
L'exemple suivant est complet et doit être compilable.
#include <iostream>
using namespace std;

class Objet
{
  public:
    Objet(int v) { val = v; }
    int val;
};

void fonction (Objet* tt[])
{
  int i = 0;
  while (tt[i])
  {
    cout << "fonction: val = " << tt[i]->val << endl;
    i++;
  }
}

int main(int argc, char *argv[])
{
  Objet* t[3];
  t[0] = new Objet(2);
  t[1] = new Objet(5);
  t[2] = (Objet*)0;

  fonction (t);

  return (0);
}
0
chevalier_25
27 déc. 2008 à 22:57
merci loupius
0