new bie en C++ pourquoi ma fonction merde??

new bie en C++ pourquoi ma fonction merde?? - C++ - Programmation

Marsh Posté le 09-04-2003 à 17:25:52    

voici le code!!
 
char* afficheResultat(int val)
{
 
if (val==7||val==11)
message="GAGNE";
if (val==2||val==3||val==12)
message="PERDU";
if (val==4||val==5)
LanceDes();
return message;
}
avec char message[6]=""; au dessus du main!!!

Reply

Marsh Posté le 09-04-2003 à 17:25:52   

Reply

Marsh Posté le 09-04-2003 à 17:28:25    

message="GAGNE";
ca ne fait pas se que tu veux.
 
utilise plutot
strcpy(message,"GAGNE" );
 
ton code gagnerais en lisibilité si tu utilisait switch-case:

Code :
  1. switch(val)
  2. {
  3. case 7,11:
  4. strcpy(message,"GAGNE" );
  5. break;
  6. case 2,3,12:
  7. strcpy(message,"PERDU" );
  8. break;
  9. case 4,5:
  10. LanceDes();
  11. break;
  12. }



Message édité par nico168 le 09-04-2003 à 17:34:06
Reply

Marsh Posté le 09-04-2003 à 17:30:54    

ok alors je dois toujours faire copier lorsque je veux attribuer une chaine dans un tablô??

Reply

Marsh Posté le 09-04-2003 à 17:34:43    

grosmethos a écrit :

ok alors je dois toujours faire copier lorsque je veux attribuer une chaine dans un tablô??


oui

Reply

Marsh Posté le 09-04-2003 à 17:34:54    

grosmethos a écrit :

voici le code!!
 
char* afficheResultat(int val)
{
 
if (val==7||val==11)
message="GAGNE";
if (val==2||val==3||val==12)
message="PERDU";
if (val==4||val==5)
LanceDes();
return message;
}
avec char message[6]=""; au dessus du main!!!


 
 [:toxicavenger] spa bien les variables globales, tu ne peux pas savoir si ca sera pas modifiées en cours de routes par une fonction X ou Y...

Reply

Marsh Posté le 09-04-2003 à 17:40:19    

ok pour les varaibles je sais c'est pas propres..mais je vais travailler ça...
Par contre le case avec des virgules marchent avec VB pas en C++ :)

Reply

Marsh Posté le 09-04-2003 à 17:44:10    

grosmethos a écrit :

ok pour les varaibles je sais c'est pas propres..mais je vais travailler ça...
Par contre le case avec des virgules marchent avec VB pas en C++ :)  


 
oups... :pt1cable:  
donc faudrait qqchose comme ca
 

Code :
  1. switch(val)
  2. {
  3. case 7:
  4. case 11:
  5. strcpy(message,"GAGNE" );
  6. break;
  7. case 2:
  8. case 3:
  9. case 12:
  10. strcpy(message,"PERDU" );
  11. break;
  12. case 4:
  13. case 5:
  14. LanceDes(); 
  15. break;
  16. }

 

Reply

Marsh Posté le 09-04-2003 à 17:44:54    

j'vois que vous etes dans de bonne dispo alors j'en profite...
J'ai fait une petite modif..mais plante encore:

Code :
  1. int LanceDes()
  2. {
  3. int resultat1,resultat2;
  4. srand(time(0));
  5. resultat1=(1+rand()%6);
  6. resultat2=(1+rand()%6);
  7. return resultat1+resultat2;
  8. }
  9. char* afficheResultat(int val)
  10. {
  11. if (val==7||val==11)
  12. strcpy(message,"GAGNE" );
  13. if (val==2||val==3||val==12)
  14. strcpy(message,"PERDU" );
  15. if (val==4||val==5||val==6||val==8||val==9||val==10)
  16. {afficheResultat(LanceDes());}

Reply

Marsh Posté le 09-04-2003 à 17:45:21    

manque le return message; à la fin

Reply

Marsh Posté le 09-04-2003 à 17:59:16    

tu entends quoi par "plante" ?
t'as pas de debuggeur ?
c'est pas un probleme de priorité ?
 
est ce que  
if (truc==1||truc==2||truc==3)
reagis pareil que
if ( (truc==1) || (truc==2) || (truc==3) )  
?

Reply

Marsh Posté le 09-04-2003 à 17:59:16   

Reply

Marsh Posté le 09-04-2003 à 18:05:42    

à la compilation il me dit mais à l'execution j'ai un message d'erreur qui si je dit annuler me sort des 100ene de ligne..j'imagine en code machine...
 
Je suis en train de remarquer que si je rappel lanceDes et bien au moment de l'addition il concatenne...
 

Code :
  1. if (val==4||val==5||val==6||val==8||val==9||val==10)
  2. {int Nvxtirage=LanceDes();
  3. // afficheResultat(Nvxtirage);
  4. cout<<"//"<<Nvxtirage;
  5. }


LanceDes() me retourne 99

Reply

Marsh Posté le 09-04-2003 à 19:35:03    

grosmethos a écrit :

à la compilation il me dit mais à l'execution j'ai un message d'erreur qui si je dit annuler me sort des 100ene de ligne..j'imagine en code machine...
 
Je suis en train de remarquer que si je rappel lanceDes et bien au moment de l'addition il concatenne...
 

Code :
  1. if (val==4||val==5||val==6||val==8||val==9||val==10)
  2. {int Nvxtirage=LanceDes();
  3. // afficheResultat(Nvxtirage);
  4. cout<<"//"<<Nvxtirage;
  5. }


LanceDes() me retourne 99  


 
ca irait pas plus vite de faire:
 

Code :
  1. if (val >= 4 && val != 7 && val <= 10)


Mouais, non en fait... :sol:

Reply

Marsh Posté le 09-04-2003 à 19:40:47    

ToxicAvenger a écrit :


 
ca irait pas plus vite de faire:
 

Code :
  1. if (val >= 4 && val != 7 && val <= 10)


Mouais, non en fait... :sol:  


 
et ça marchera mieux si tu fais :

Code :
  1. if ((val >= 4) && (val != 7) && (val <= 10))


 
le '&&' est prioritaire sur les comparaisons, non ?


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 09-04-2003 à 19:43:20    

Tetragrammaton IHVH a écrit :


 
et ça marchera mieux si tu fais :

Code :
  1. if ((val >= 4) && (val != 7) && (val <= 10))


 
le '&&' est prioritaire sur les comparaisons, non ?  


 
spossible...  :ange:

Reply

Sujets relatifs:

Leave a Replay

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