[C] systeme de points - Programmation
Ceci répond-il à votre question ? Oui | Non
 

Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [C] systeme de points
 
Profil : IDNaute
Plus d'informations

Bonjour je suis nouveau dans la programmation (1 semaine et demi !!) et j'apprend le C.
Je fait un projet pour un espece de jeu "du plus ou du moin" avec plusieurs niveaux (en plusieurs fichiers) et tout et tout.
Mais j'ai un probleme pour creer un systeme de points je n'arrive pas à le faire.

j'ai essayé de faire un truc comme ça :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <header.h>
  4. long points(long points)
  5. {
  6.   int i;
  7.     for(i = 0; i == 0; i++)  /*j'essaye de faire une boucle pour ne pas que la valeur se mette à 0 tous le temps*/
  8.       {
  9.           long total = 0;
  10.         }
  11.       total = total + points;
  12.       return total;
  13. }


Mais pendant la compilation il me dit que la variable "total" n'est pas déclaré.
J'ai éssayé avec do..while:

Code :
  1. ...
  2. int i = 0;
  3.     do
  4.       {
  5.           long total = 0;
  6.           i++;
  7.         }while(i == 0);
  8.       total = total + points;
  9.         ....


meme résultat.
Donc si vous avez une solution pour initialiser la variable "total" une seule fois vous pouvez m'aider merci.

Liens

Profil : IDNaute
Plus d'informations

bonjour,
1. for (i=0; i==0; i++) s'executera toujours qu'une fois, autant l'enlever!
2. la portée d'une variable est limité au bloc où elle est déclarée:

Code :
  1. // ...
  2. {
  3.   long total=0;
  4.   // la tu peux l'utiliser
  5. }
  6. // la tu ne peux pas!


Code :
  1. // ...
  2. long total;
  3. {
  4.   total=0;
  5.   // la tu peux l'utiliser
  6. }
  7. // la tu peux aussi


---------------
Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Profil : IDNaute
Plus d'informations

merci de ta reponse, donc la seule solution c'est de faire une variable globale comme:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <header.h>
  4. long total;
  5. long points(long points)
  6. {
  7.   int i;
  8.     for(i = 0; i == 0; i++)  /*j'essaye de faire une boucle pour ne pas que la valeur se mette à 0 tous le temps*/
  9.       {
  10.           total = 0;
  11.         }
  12.       total = total + points;
  13.       return total;
  14. }


et ça marcherait ça ?

Profil : IDNaute
Plus d'informations

ca marcherait oui.
mais pourquoi en variable globale?
tu la déclares de la même facon que le i, c'est suffisant!

 

EDIT: remarque, vu que c'est une fonction... enfin je sais pas trop ce que tu veux en faire...


Message édité par coca25 le 16-12-2007 à 15:57:26

---------------
Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Profil : IDNaute
Plus d'informations

à tout simplement merci beaucoup coca25

Profil : IDNaute
Plus d'informations

euh j'ai un probleme,
mon code

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. long points(long points)
  4. {
  5.     long total;
  6.   int i;
  7.     for(i = 0; i < 3; i++)  /*j'essaye de faire une boucle pour ne pas que la valeur se mette à 0 tous le temps*/
  8.       {
  9.           long total = 0;
  10.           }
  11.       total = total + points;
  12.       printf("\ntotal = %ld\n", total);
  13.       return total;
  14. }
  15. int main(int argc, char *argv[]) // Main
  16. {
  17.     points(10); //10 points
  18.     system("PAUSE" );
  19. }


et le resultet est

Code :
  1. total = 16394

Profil : IDNaute
Plus d'informations

long total; // la tu déclares une variable
for ...
{
long total = 0; // la tu en déclares une nouvelle
}
total = total + points; // la, tu utilises la premiere qui n'est pas initialisée


---------------
Ne pas oublier le [resolu] pour finir le sujet.
Penser à voir les tutos, ca peut aider!
Profil : IDNaute
Plus d'informations

Je suis pas sûr d'avoir compris.
Je vais donner une technique que je devrait peut-être pas donner parce que tu es débutant, mais tampis :)

 

si, dans ta fonction tu ajoute le mot-clé "static" avant ta variable:

 
Code :
  1. long points(long p) // ne remet pas points, ça peut être ambigüe
  2. {
  3.   static long total = 0;
  4.   ...
  5. }


Avec "static", au premier passage dans la fonction, total sera mis à 0, mais aux passages suivants, il ne sera plus remis à 0.

 

Pour ton cas, il est préférable de faire passer la valeur de total en paramètre:

 
Code :
  1. long points(long total, long p)
  2. {
  3. ...
  4. }
 

Comme ça dans ton main, tu peux mettre:

Code :
  1. int tot = 0;
  2. tot = points(tot, 10);
  3. tot = points(tot, 5);
  4. tot = points(tot, 2);
  5. ...



Message édité par CRicky le 16-12-2007 à 20:26:09

---------------
B800A0 8EC0 B400 B013 CD10 B91000 BA1000 B005
E81000 B407 CD21 B400 B003 CD10 B44C B000 CD21
50 89D0 BB4001 F7E3 89C7 01CF 58 26 8805 C3
Paranoid Android
Profil : IDNaute
Plus d'informations

[:drapo]


---------------
Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Profil : IDNaute
Plus d'informations

ok merci beaucoup je vais essayer de me débrouller avec ça je vous tiens au courant.

Profil : IDNaute
Plus d'informations

merci beaucoup a tous ça marche, je vais quand meme essayer de trouver un autre moy (tout seul) de le faire.


Message édité par ptitcois le 19-12-2007 à 19:21:37

Aller à :
Ajouter une réponse
  FORUM Infos-du-Net » Programmation » [C] systeme de points
 

Liens