Problème tableau 3d et pointeurs
Bonjour,
J'ai fais une recherche et je n'ai pas trouvé de solution, en choisissant les résultats que de la partie C et C++, il y a énormément de topics et les noms ne sont pas toujours explicite.
J'espère ne pas créer un topic, alors qu'il y en existe déjà un.
Je voudrais faire une espèce d'agenda, avec un tableau à 3 dimensions.
Je voudrais par exemple que les caractères du nom du premier enregistré soit en [0][0][i].
[0][1][i] pour l'adresse e-mail (par exemple)
[0][2][i] pour l'adresse (par exemple)
[1][0][i] Nom de l'utilisateur du 2ième enregistré.
etc...
Je déjà fait ça avec un tableau 2d ont ne peut qu'ajouter les noms de contacts :
Code:
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
| #include <iostream>
using namespace std;
#include <string.h>
void AjouterContact(char Tab[][20], int* NbContacts);
void AfficherContact(char Tab[][20], int NbContacts);
void SupprimerContact(int* NbContacts);
int main()
{
char Tab[10][20];
int NbContacts=0;
int Choix;
while(Choix!=4)
{
cout <<"1- Ajouter un contact" << endl;
cout <<"2- Afficher tout les contacts" << endl;
cout <<"3- Vider l'agenda" << endl;
cout <<"4- Quitter" << endl;
cout <<"Taper votre choix : ";
cin >> Choix;
cout << endl;
getchar();
switch(Choix)
{
case 1:
AjouterContact(Tab, &NbContacts);
cout<<endl;
break;
case 2:
AfficherContact(Tab, NbContacts);
cout << endl;
break;
case 3:
SupprimerContact(&NbContacts);
break;
case 4:
return 0;
break;
default:
cout <<"erreur de saisie" << endl;
}
}
}
void AjouterContact(char Tab[][20], int* NbContacts)
{
char Nom[20];
cout<<"Veuillez entrer votre Nom et Prenom :\n";
cin.getline(Nom, 20);
strcpy(Tab[*NbContacts], Nom);
(*NbContacts)++;
}
void AfficherContact(char Tab[][20], int NbContacts)
{
int i=0;
cout<<"Affichage de l'agenda :\n";
while(i<NbContacts)
{
cout<<i+1<<" - "<<Tab[i]<<endl;
i++;
}
if(NbContacts==0)
cout<<"L'agenda est vide.\n";
}
void SupprimerContact(int* NbContacts)
{
*NbContacts=0;
cout<<"Contacts supprime.\n\n";
} |
Dans mon cours normalement je devrais mettre :
void AjouterContact(char** Tab, int* NbContacts);
Et :
AjouterContact(&&Tab, &NbContacts);
Mais là c'est :
AjouterContact(Tab[][20], &NbContacts);
Et :
AjouterContact(Tab, &NbContacts);
Ça doit venir du fait que je met des caractères ou autre chose...
J'ai éssayé de mettre dans le main :
char Tab[10][20][20];
Et ensuite :
void AjouterContact(char Tab[][][20], int* NbContacts);
Et là déjà ça compile plus.
Mais de toute façon, j'aurais :
strcpy(Tab[*NbContacts], Nom);
De faux.
Je sais pas exactement ce que je dois mettre pour remplit en [0][1][i].
Surement un truc du genre :
*(*(Tab+1)+0)
Ça ferait :
strcpy(*(*(Tab+1))[*NbContacts], Nom);
Vous n'auriez pas une solution ?
Merci, d'avance.
Au revoir.