les chaines de caracteres

les chaines de caracteres - C++ - Programmation

Marsh Posté le 05-12-2005 à 16:21:54    

Bonjour,  
 
je suis en train de faire un exercice en c++, et je rencontre ce probleme :  
je veux mettre des chaines de caracteres dans un tableau, alors comme les chaines de caracteres sont deja des tableaux, j'ai fait un tableau a 2 dimensions, et dans chaque ligne (ou colonne), je veux mettre mes caracteres. Bon mais voila ce que me dit g++ :  
 

Code :
  1. erreur: incompatible types in assignment of ‘char [50]’ to ‘char* [50]’


 
je ne comprends pas trop ou est le probleme. Pourriez vous m'aider?
 
Merci d'avance :)
 
Amandine, une débutante
 
 

Reply

Marsh Posté le 05-12-2005 à 16:21:54   

Reply

Marsh Posté le 05-12-2005 à 16:26:16    

Euh... en C++, ce serait peut-être plus sympa d'utiliser une collection de string... Genre avec les classes vector et string par exemple (ou pas, j'suis un noob en C++)
 
A moins que tu ne fasses du C ?

Reply

Marsh Posté le 05-12-2005 à 16:29:57    

non, je sais qu'apparement cette histoire de char* est pas trop conseillée, mais je suis au tout début de l'apprentissage du c++, ma prof a apparement consciement évité le sujet des chaines de caractères et je dois pourtant les traiter. C'est juste un exercice, donc je cherche surtout a comprendre et a faire avec ce que je comprends. Et la je comprends plus =)
 
Enfin bon donc c'est normalement du c++ que je fais, mais c'est vrai que tout ce qu'on fait a l'air plutot du C...  
 

Reply

Marsh Posté le 05-12-2005 à 16:30:40    

en fait j'aimerais réussir a le faire avec les char, et puis quand je verrais mieux les chaines de caracteres je le ferais avec ce qui existe de mieux ;)

Reply

Marsh Posté le 05-12-2005 à 16:56:35    

Ben en fait, pour faire les choses bien, les string devraient être la première chose à apprendre en C++ :) Sinon c'est du C, pas du C++.
Donc recherche un cours de C sur les chaines de caractères.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 05-12-2005 à 17:20:43    

j'ai regardé ce qui existait en c, mais ca m'aide pas beaucop plus. Est ce que c'est vraiment possible de faire ce que je veux faire?
est ce que je peux pas attendre l'exercice d'apres pour apprendre les string?

Reply

Marsh Posté le 05-12-2005 à 17:24:48    

On peut, en C. Juste ce n'est pas si simple que ça.
 
Poste le bout de code pointant ton problème, qu'on voie comment tu as fait.

Reply

Marsh Posté le 05-12-2005 à 17:35:00    

Alors, le but de l'exercice c'est de faire un annuaire tout bete. Voila le bout de code qui correspond a l'enregistreemnt des données :  
 

Code :
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. main(void)
  5. {
  6. char nom[50];
  7. char tel[14];
  8. char* Tnom[201][50]; // tableau des noms
  9. char* Ttel[201][14]; // tableau des numeros de telephone
  10. int h;
  11. int i;
  12. int R=9; // réponse au choix principal
  13. for (i=0;i<=200;i++) {
  14. for (h=0;h<=50;h++) { Tnom[i][h] = ""; }
  15. for (h=0;h<=14;h++) {Ttel[i][h] = ""; }
  16. }
  17. /*
  18. cout <<" Tableau des noms : "<<endl;
  19. for (i=0;i<=200;i++) {
  20. for (h=0;h<=50;h++) {
  21. if (Tnom[h][0]!="" )
  22. cout <<Tnom[i][h]<<" - "; } }
  23. cout <<"\n \n Tableau des numeros de telephone : "<<endl;
  24. for (i=0;i<=200;i++) {
  25. for (h=0;h<=14;h++) {
  26. if (Ttel[h][0]!="" )
  27. cout <<Ttel[i][h]<<" - "; } }
  28. */
  29. while (R!=0) {
  30. cout<<"\n Que voulez vous faire ? \n 1- saisir un nouvel abonne \n 2- rechercher le numero d'un abonne a partir de son nom \n 3- afficher la liste des abonnes\n 0- sortir"<<endl;
  31. cin >> R;
  32. if (R==1) { // saisir un nouvel abonne
  33. i=0;
  34. while ((Tnom[i][0]!="" )&&(i<201)) {
  35. i++;
  36. }
  37. nb = i+2;
  38. cout <<"Enregistrement n°"<<i+1<<" - ";
  39. cout <<"Saisissez le nom du nouvel abonne : "<< endl;
  40. cin >> nom;
  41. Tnom[i] = nom;
  42. cout <<"Saisissez le numero du nouvel abonne : "<<nom<< endl;
  43. cin >> tel;
  44. Ttel[i] = tel;
  45. }
  46. }

Reply

Marsh Posté le 05-12-2005 à 17:35:22    

le message que t'indique ton compilo indique seulement que tu essaies d'assigner 2 types de données différents. Je suppose donc que tu as quelque chose comme ça:
 
char**a;
char*b;
 
et tu fais a=b;
 
J'ai résumé la situation mais le message du compilo semble indiquer une mqnip de ce style.
Avec un peu plus de code on pourrait y voir plus clair.
 
Stef
 

Fab4am a écrit :

Bonjour,  
 
je suis en train de faire un exercice en c++, et je rencontre ce probleme :  
je veux mettre des chaines de caracteres dans un tableau, alors comme les chaines de caracteres sont deja des tableaux, j'ai fait un tableau a 2 dimensions, et dans chaque ligne (ou colonne), je veux mettre mes caracteres. Bon mais voila ce que me dit g++ :  
 

Code :
  1. erreur: incompatible types in assignment of ‘char [50]’ to ‘char* [50]’


 
je ne comprends pas trop ou est le probleme. Pourriez vous m'aider?
 
Merci d'avance :)
 
Amandine, une débutante


Reply

Marsh Posté le 05-12-2005 à 17:35:31    

(pourquoi ca rajoute tant de lignes blanches???)

Reply

Marsh Posté le 05-12-2005 à 17:35:31   

Reply

Marsh Posté le 05-12-2005 à 17:47:06    

utilise std::string

Reply

Marsh Posté le 05-12-2005 à 17:47:50    

plutôt curieux comme définition:

Code :
  1. char* Tnom[201][50];


 
avec ça tu définis du char *** ? es tu sur que c'est ce que tu veuilles ?
 
Stef

Reply

Marsh Posté le 05-12-2005 à 17:49:22    

scol30 a écrit :

plutôt curieux comme définition:

Code :
  1. char* Tnom[201][50];


 
avec ça tu définis du char *** ? es tu sur que c'est ce que tu veuilles ?
 
Stef


 
Aucuen idée. J'ai deja galéré pour trouver qu'il fallait mettre une etoile pour que ca marche, mais j'ai pas trouvé d'explication réelle sur le net de cette étoile, malgré mes nombreuses recherches. J'ai juste constaté que ca marchait !

Reply

Marsh Posté le 05-12-2005 à 17:50:02    

Taz a écrit :

utilise std::string


 
je suis en train de lire les tutos la dessus pour l'utiliser ;)

Reply

Marsh Posté le 05-12-2005 à 17:56:03    

Fab4am a écrit :

Aucuen idée. J'ai deja galéré pour trouver qu'il fallait mettre une etoile pour que ca marche, mais j'ai pas trouvé d'explication réelle sur le net de cette étoile, malgré mes nombreuses recherches. J'ai juste constaté que ca marchait !


 :sweat:  
 
"pointeur", ca te dit quelque chose, ou ce mot aussi t'est totalement inconnu ?

Reply

Marsh Posté le 05-12-2005 à 18:00:10    

Désolée, je débute et je suis obligée de comprendre toute seule comment ca marche, alors me tapez pas trop fort :)
 
J'ai lu plusieurs fois, pointeur, mais ca ne doit pas correspondre à ce que je crois apparement...

Reply

Marsh Posté le 05-12-2005 à 18:07:27    

http://mapage.noos.fr/emdel :)
 
Mais encore une fois, c'est du C. Si ton but c'est le C++, démarre directement avec du C++ sans passer par la case C.


Message édité par Elmoricq le 05-12-2005 à 18:08:09
Reply

Marsh Posté le 05-12-2005 à 18:24:37    

Alors je vais raler auprès de ma prof. On est censé apprendre du C++, mais tout ce que je sais faire est apparement du C (exemple les include du début, mon compilateur me dit que c'est pas vraiment les vrais du c++ !)

Reply

Marsh Posté le 05-12-2005 à 18:31:25    

C'est du vieux C++ tes #include.
 
Maintenant ils s'écrivent plutôt comme ça  :
#include <iostream>
#include <cstdlib>
#include <cstring>

Reply

Marsh Posté le 05-12-2005 à 20:00:55    

Fab4am a écrit :

Alors je vais raler auprès de ma prof. On est censé apprendre du C++, mais tout ce que je sais faire est apparement du C (exemple les include du début, mon compilateur me dit que c'est pas vraiment les vrais du c++ !)


 
Apprendre le C++ pendant ses études, grace à un prof, on en a tous révé ...
Ta prof a choisi d'introduire les chaines de caractères C-style avant std::string, bon. C'est deux choses qu'un programmeur C++ est obligé de connaitre. Le fait est que les gens qui ont réfléchis à la pédagogie de l'enseignement du C++, et qui ont de l'expérience, optent pour l'apprentissage de std::string dès le début, et les char* pour beaucoup plus tard.  
Pour ça, je crois que tu auras du mal à convaincre ta prof de refaire son cours ...
Mais tu peux toujours lui demander si tu a le droit d'utiliser std::string pour ton tp.
 
Par contre, #include <iostream.h>, le fait que la bibliothèque standard soit dans le namespace std, il faut en parler à la prof, ça ne compilera pas sur un compilateur récent sans gros warning, faut se mettre un peu à jour, c'est pas d'hier quand meme !

Reply

Marsh Posté le 06-12-2005 à 11:31:25    

scol30 a écrit :

plutôt curieux comme définition:

Code :
  1. char* Tnom[201][50];


 
avec ça tu définis du char *** ? es tu sur que c'est ce que tu veuilles ?
 
Stef


 
T tab[x][y] != T **tab


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 07-12-2005 à 11:19:22    

bon, finalement j'ai utilisé les std::string comme vous me l'aviez conseillé, et j'ai enfin réussi a finir mon petit programme :)
 
merci à vous tous ! :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed