Migration vers VC++ 2005

dilabo Messages postés 2 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 2 avril 2006 - 31 mars 2006 à 15:49
dilabo Messages postés 2 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 2 avril 2006 - 2 avril 2006 à 15:07
Bonjour

J'essaie de me remettre au C++ sur lequel je n'ai pas travaillé depuis quelque temps.
Mes anciens programmes ont étés écrit avec l'editeur de prgramme de microsoft (visual studio x?) en 2003
Je travaille maintenant sur visual studio express 2005
Peut être y a t il des changements à faire dans le code pour se mettre à jour.
en particulier en ce qui concerne les librairies (#include...) ?

sur cet exemple, (le programme doit simuler un jeu de carte) je ne comprend pas les erreurs obtenue à la compilation :


paquet.cpp(3) : fatal error C1190: managed targeted code requires a '/clr' option


carte.h(4) : error C2011: 'Carte' : 'class' type redefinition c:\ ... carte.h(4) : see declaration of 'Carte'

Quelqu'un peut il me dépanner ,svp ?

(voici le code :


//-------------------------------------paquet.h--------------------------------------------------


#include "carte.h"


class Paquet


{


public :


Paquet();



void Affiche();



void Bat();


private :


Carte Tas[52];


};


//-----------------------------------carte.h----------------------------------------------------------


class Carte


{


public :


Carte(
int couleur=0,
int hauteur=0);


private :



int c;



int h;


};


//------------------------------------------carte.cpp-----------------------------------------------------


#include "carte.h"


Carte :: Carte(
int couleur,
int hauteur)


{


c=couleur;


h=hauteur;


}



//------------------------------------------paquet.cpp----------------------------------------


#include
"paquet.h"


#using
<stdlib>


#using
<time>


#include


using
namespace std;





Paquet :: Paquet()


{



int i=0;



for (
int couleur=0;couleur++;couleur<4)


{



for (hauteur =0;hauteur++;hauteur<13)


{


Carte K(couleur,hauteur);


Tas[i]=K;


i++;


}


}


}


void Paquet :: Affiche()


{


cout <<
"\nVoici le paquet :";



for(
int i =0;i++;i<52)


{


cout<<
"\n"<<Tas[i].h<<
" de "<<Tas[i].c;


}


}


void Paquet ::Bat()


{



int CarteDejaTiree[52];



int tir;



for (
int i=0;i++;i<52)


CarteDejaTiree[i]=0;



for (
int i=0;i++;i<52)


{



do


{


tir=(
int)(rand()*52.0/RAND_MAX);


}



while CarteDejaTiree[tir]=1;


Tas[i].h=i%13;


Tas[i].c=i/13;


CarteDejaTiree[tir]=1;


}


}

2 réponses

cs_stenka Messages postés 14 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 30 octobre 2006
31 mars 2006 à 20:02
correct
#include <stdlib.h>
#include <ctime>


incorrect
#using <stdlib>
#using <time>


tu peux même les supprimer car ton code n'utilise pas ces lib


hauteur n'est pas déclarée ici...
for (hauteur =0;hauteur++;hauteur<13)


h et c sont des membres privés de Carte...
cout<<"\n"<<Tas[i].h<<" de "<<Tas[i].c;


il faut mettre des ()
while CarteDejaTiree[tir]=1;


cette "condition" sera tjs vraie car est l'opérateur d'affectation (pour comparer, il existe)
while (CarteDejaTiree[tir]=1)

Le code qui suit se compile mais je ne peux rien dire de plus car je ne sais pas ce que tu veux en faire.


class Carte


{


public :


Carte(int couleur=0,int hauteur=0);


int c;


int h;


};


Carte :: Carte(int couleur,int hauteur)


{


c=couleur;


h=hauteur;


}


class Paquet


{


public :


Paquet();


void Affiche();


void Bat();


private :


Carte Tas[52];


};


#include


using namespace std;


Paquet :: Paquet()


{


int i=0;


for (int couleur=0;couleur++;couleur<4)


{


for (int hauteur =0;hauteur++;hauteur<13)


{


Carte K(couleur,hauteur);


Tas[i]=K;


i++;


}


}


}


void Paquet :: Affiche()


{


cout <<"\nVoici le paquet :";


for(int i =0;i++;i<52)


{


cout<<"\n"<<Tas[i].h<<" de "<<Tas[i].c;


}


}


void Paquet ::Bat()


{


int CarteDejaTiree[52];


int tir;


for (int i=0;i++;i<52)


CarteDejaTiree[i]=0;


for (int i=0;i++;i<52)


{


do


{


tir=(int)(rand()*52.0/RAND_MAX);


}


while (CarteDejaTiree[tir]==1);
Tas[i].h=i%13;


Tas[i].c=i/13;


CarteDejaTiree[tir]=1;


}


sten
ka
0
dilabo Messages postés 2 Date d'inscription mercredi 19 octobre 2005 Statut Membre Dernière intervention 2 avril 2006
2 avril 2006 à 15:07
Merci pour ta réponse.
j'ai corrigé les erreur d'include
En ce qui concerne les #using au lieu de #include c'est une étourderie... que je n'avais pas remarquée.
merci pour le nom des librairies. c'est difficile de deviner si il faut les ecrire entre "" ou entre <> avec un.h ou sans...
ces librairies doivent servir pour utiliser rand()
Peut être est ce que ca marche sans mais j'ai pas essayé.

Le reste était des erreurs facile à corriger

merci encore et à +
0
Rejoignez-nous