Problème de variables

Problème de variables - C++ - Programmation

Marsh Posté le 31-05-2005 à 16:26:17    

Comment se fait il que lorsque j'effectue une action en utilisant cette classe, il ne mémorise pas les valeurs modifiées et me ressort à chaque fois les valeurs que je lui met lorsque je l'initialise. Pour les courageux, voici le code :
 

Code :
  1. #include "Attributs.h"
  2. Attributs::Attributs()
  3. {
  4. //cout<<"Constructeur par défaut Attributs"<<endl;
  5. for(int i=0; i<5; i++)
  6. {
  7.  tableau[i]=5;
  8. }
  9.  caractere=5;
  10.  sociabilite=5;
  11.  nourriture=5;
  12.  proprete=5;
  13.  sante=5;
  14.  vie=15000;
  15.  evolution=0;
  16.  compteur1=5;
  17.  sortie=tab[0]=true;
  18. }
  19. /***************************************************************************************************************************************/
  20. //Cette méthode consiste à ajouter le nombre voulu de points dans l'attribut que l'on souhaite. Cela dépend de l'action effectuée par le tama
  21. void Attributs::ajouter(int &var, int &att)
  22. {
  23. //cout<<"méthode ajouter"<<endl;
  24. //var représente la valeur à ajouter et att représente l'attribut choisi
  25. switch (att)
  26. {
  27. case(1): caractere+=var;   //1 pour le caractere
  28.    tableau[0]=caractere;
  29.    if(caractere>10)
  30.    {
  31.     caractere=10;
  32.     tableau[0]=caractere;
  33.    }
  34.    //stocker.tableau[0]=caractere;
  35.    break;
  36. case(2): sociabilite+=var;  //2 pour la soc
  37.    tableau[1]=sociabilite;
  38.    if(sociabilite>10)
  39.    {
  40.     sociabilite=10;
  41.     tableau[1]=sociabilite;
  42.    }
  43.    //stocker.tableau[1]=sociabilite;
  44.    break;
  45. case(3): nourriture+=var;  //3 pour la nourriture
  46.    tableau[2]=nourriture;
  47.    if(nourriture>10)
  48.    {
  49.     nourriture=10;
  50.     tableau[2]=nourriture;
  51.    }
  52.   // stocker.tableau[2]=nourriture;
  53.    break;
  54. case(4): proprete+=var;   //4 pour la proprete
  55.    tableau[3]=proprete;
  56.    if(proprete>10)
  57.    {
  58.     proprete=10;
  59.     tableau[3]=proprete;
  60.    }
  61.    //stocker.tableau[3]=proprete;
  62.    break;
  63. case(5): sante+=var;    //5 pour la sante
  64.    tableau[4]=sante;
  65.    if(sante>10)
  66.    {
  67.     sante=10;
  68.     tableau[4]=sante;
  69.    }
  70.    //stocker.tableau[4]=sante;
  71.    break;
  72. default: cout<<"erreur manip"<<endl;  //si aucun des chiffres désignés, erreur manip
  73.    break;
  74. }
  75. //stocker.recevoir(caractere, sociabilite, nourriture, proprete, sante);
  76. }
  77. /**************************************************************************************************************/
  78. //Cette méthode consiste à enlever le nombre voulu de points dans l'attribut que l'on souhaite. Cela dépend de l'action effectuée par le tama
  79. void Attributs::enlever(int &var, int &att)
  80. {
  81. //cout<<"méthode enlever"<<endl;
  82. //var représente la valeur à enlever et att représente l'attribut choisi
  83. switch (att)
  84. {
  85. case(1): caractere-=var;   //1 pour le caractere
  86.    tableau[0]=caractere;
  87.    if(caractere<0)
  88.    {
  89.     caractere=0;
  90.     tableau[0]=caractere;
  91.    }
  92.   // stocker.tableau[0]=caractere;
  93.    break;
  94. case(2): sociabilite-=var;  //2 pour la soc
  95.    tableau[1]=sociabilite;
  96.    if(sociabilite<0)
  97.    {
  98.     sociabilite=0;
  99.     tableau[1]=sociabilite;
  100.    }
  101.   // stocker.tableau[1]=sociabilite;
  102.    break;
  103. case(3): nourriture-=var;  //3 pour la nourriture
  104.    tableau[2]=nourriture;
  105.    if(nourriture<0)
  106.    {
  107.     nourriture=0;
  108.     tableau[2]=nourriture;
  109.    }
  110.   // stocker.tableau[2]=nourriture;
  111.    break;
  112. case(4): proprete-=var;   //4 pour la proprete
  113.    tableau[3]=proprete;
  114.    if(proprete<0)
  115.    {
  116.     proprete=0;
  117.     tableau[3]=proprete;
  118.    }
  119.  //  stocker.tableau[3]=proprete;
  120.    break;
  121. case(5): sante-=var;    //5 pour la sante
  122.    tableau[4]=sante;
  123.    if(sante<0)
  124.    {
  125.     sante=0;
  126.     tableau[4]=sante;
  127.    }
  128.  //  stocker.tableau[4]=sante;
  129.    break;
  130. default: cout<<"erreur manip"<<endl;  //si aucun des chiffres désignés, erreur manip
  131.    break;
  132. }
  133. //stocker.recevoir(caractere, sociabilite, nourriture, proprete, sante);
  134. }
  135. /********************************************************************************************************/
  136. bool Attributs::sortir()
  137. {
  138. //cout<<"methode sortir de attributs"<<endl;
  139. sortie=!sortie;
  140. tab[0]=sortie;
  141. return tab[0];
  142. }
  143. /*******************************************************************************************************/
  144. void Attributs::afficher()
  145. {
  146. cout<<"Voici les scores :"<<endl;
  147. cout<<"Caractère : "<<tableau[0]<<endl;
  148. cout<<"Sociabilite : "<<tableau[1]<<endl;
  149. cout<<"Nourriture : "<<tableau[2]<<endl;
  150. cout<<"Proprete : "<<tableau[3]<<endl;
  151. cout<<"Santé : "<<tableau[4]<<endl;
  152. //cout<<"méthode afficher"<<endl;
  153. //stocker.score();
  154. }
  155. /********************************************************************************************************/
  156. bool Attributs::acesseur()
  157. {
  158. //cout<<"acesseur de attributs"<<endl;
  159. tab[0]=sortie;
  160. return tab[0];
  161. }
  162. /********************************************************************************************************/
  163. void Attributs::stocker1()
  164. {
  165. cout<<"Méthode stocker"<<endl;
  166.   FILE *fp = fopen("test.txt", "w+" );
  167.   //fwrite(essai, sizeof(int), 2, fp);
  168. fprintf(fp, "%d", caractere);
  169. fprintf(fp, "%d", sociabilite);
  170. fprintf(fp, "%d", nourriture);
  171. fprintf(fp, "%d", proprete);
  172. fprintf(fp, "%d", sante);
  173.     fclose(fp);
  174. }
  175. /*********************************************************************************************************/
  176. void Attributs::lire()
  177. {
  178. cout<<"Méthode lire"<<endl;
  179. // FILE *fichier;
  180. /*if (fscanf(stdin, "%d", &i))
  181. printf("L'entier lu est : %i\n", i);
  182. else {
  183. printf("Erreur lors de la lecture depuis le fichier d'entrée standard.\n" );
  184. return 1;*/
  185. getch();
  186. //fichier=fopen("test.txt", "w+" );
  187. //fread( tableau, sizeof(int), 5, fichier );
  188. for(int i=0; i<5; i++)
  189. {
  190.  //fscanf( fichier, "%d", tableau[i] );
  191. }
  192. /* tableau[0]=caractere;
  193. tableau[1]=sociabilite;
  194. tableau[2]=nourriture;
  195. tableau[3]=proprete;
  196. tableau[4]=sante;*/
  197. }


Message édité par Llialn le 01-06-2005 à 10:21:49
Reply

Marsh Posté le 31-05-2005 à 16:26:17   

Reply

Marsh Posté le 31-05-2005 à 16:51:34    

Salut,
Est-ce que les non-courageux auraient droits à la balise "code" et au morceau de code qui pose problème à priori ?
PS : je me range dans les non-courageux...

Reply

Marsh Posté le 31-05-2005 à 16:55:17    

Ne sachant pas moi même exactement le code qui pose problème, je sais juste que c'est dans cette classe qu'il y a un prlblème. Si tu veux le code fait plus du double que ce qui est affiché donc je ne pense pas que le non courageux comme toi (que je comprend tout à fait d'ailleurs :D :D ) aient envi de tout lire. Je sais juste qu'il y a un problème de "communication" entre les méthodes, voir même entre les autres classes. Et je ne sais pas trop comment résoudre le problème. Si qqun par chance, voit qq chose, qu'il me le fasse savoir. Merci d'avance  :jap:

Reply

Marsh Posté le 31-05-2005 à 18:26:28    

balise [ cpp] bordel :o c'est illisible :o

Reply

Marsh Posté le 31-05-2005 à 21:57:46    

Reply

Marsh Posté le 31-05-2005 à 22:03:11    

[:ban]

Reply

Marsh Posté le 01-06-2005 à 10:22:29    

Ca y est j'ai fait comme vous m'aviez demandé, je n'avais pas vu ce bouton, mais je l'utiliserai à l'avenir car il est bien pratique.
Merci beaucoup :jap:

Reply

Marsh Posté le 01-06-2005 à 10:48:29    

ça n'en reste pas moins du C

Reply

Marsh Posté le 01-06-2005 à 11:02:23    

Je ne savais pas que les classes existaient en C :S

Reply

Marsh Posté le 01-06-2005 à 11:37:06    

Llialn a écrit :

Je ne savais pas que les classes existaient en C :S


Code :
  1. ...
  2.   FILE *fp = fopen("test.txt", "w+" );
  3.   //fwrite(essai, sizeof(int), 2, fp);  
  4.     fprintf(fp, "%d", caractere);
  5.     fprintf(fp, "%d", sociabilite);
  6.     fprintf(fp, "%d", nourriture);
  7.     fprintf(fp, "%d", proprete);
  8.     fprintf(fp, "%d", sante);
  9.     fclose(fp);
  10. ...
  11. getch()
  12. ...


 
je savais pas que ça existaient en C++  :)


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 01-06-2005 à 11:37:06   

Reply

Marsh Posté le 01-06-2005 à 12:05:39    

on a pas le droit de mélanger le C et le C++? C'est que ca me paraissait plus simple comme ça, mais si tu as une autre facon de le faire plus facile, je veux bien que tu me la dise :)
 
Merci :jap:

Reply

Marsh Posté le 01-06-2005 à 12:12:34    

non. Surtout quand c'est du mauvais C

Reply

Marsh Posté le 01-06-2005 à 12:26:54    

Et bien il faudrait que j'utilise quelle fonction pour écrire dans un fichier, c'est fwrite c'est bien ça?
Dites moi comment il faut l'utiliser svp  :love:

Reply

Marsh Posté le 01-06-2005 à 12:53:21    

fstream
 
http://c.developpez.com/faq/cpp/?page=fichiers


Message édité par blastman le 01-06-2005 à 12:56:48

---------------
http://www.blastmanu.info
Reply

Sujets relatifs:

Leave a Replay

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