vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006
-
10 juil. 2002 à 18:19
cs_ProGamer
Messages postés44Date d'inscriptionjeudi 11 juillet 2002StatutMembreDernière intervention 1 février 2022
-
15 juil. 2002 à 14:57
je suis nouveau en C++ (je migre de VB6) et il y a quelques petites choses que l'aide de Microsoft ne parvient pas a me faire comprendre... (pourquoi vous riez ?? j'aime bien le MSDN d'habitude)
c'est a propos du rand() : j'ai en tete l'utilisation sous VB c'est a dire nombre=rnd((5)+3) pour avoir ma variable nombre qui retourne quelque chose entre 3 et 5. mais vous vc++ c'est apparemment pa la meme chose... quelqu'un peut me dire comment faire ca en c++ ?
et pis je pige pas du tout la boucle for...
dans vb c'était for i = 0 to 10, next mais dans vc++ il demande 3 arguments !!?? quelqu'un maitrise ca ?
@+
guguy
Messages postés28Date d'inscriptionjeudi 27 décembre 2001StatutMembreDernière intervention 5 août 2002 10 juil. 2002 à 20:51
En c++ pour avoir un nombre rand il y a deux chose à faire :
tout d'abord il faut initialiser avec la fonction srand(), pour avoir un nombre vraiment aléatoire je te conseille de mettre time comme argument :
srand((unsigned) time(NULL));
avec ca tu initialise avec le nombre de secondes écoulés depuis 1970.
ensuite pour assigner un nombre aléatoire tu fait par exemple :
int a = rand();
pour avoir un nombre compris entre 0 et 10 :
int a = rand()%10;
entre 3 et 5 :
int a = (rand()%2)+3;
Note : pour utiliser rand() et srand() il faut inclure le header <cstdlib> et pour time il faut inclure <ctime>.
Sinon pour for je vais te mettre un petit exemple pour que tu comprenne :
for(int a=0; a<10; a++){
cout << a;}
Le premier argument est l'initialisation, le second est la condition et le troisième est "l'action".
On pourrais aussi mettre :
int a=0;
while(a<10) {
cout << a;
a++;}
vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006 10 juil. 2002 à 22:17
Les gars vous etes géniaux ! C'est dans ces moments là que j'aime le réseau codes-sources !
Ca fait chaud au coeur de voir que la solidarité existe toujours entre les hommes, snif ;-)
Heu.. j'en fais peut-etre un peu trop là.
merci quand meme !
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006 10 juil. 2002 à 23:23
j'ai compris le fond, mais lorsque je mets en pratique, voila ce que me retourne VC++ 6.0 :
error C2447: missing function header (old-style formal list?)
Or, voici la liste des headers que j'ai integré au debut :
en manquerait-il un ??
pour parer a toute eventualité, je vous fourni le code source de la partie delicate (il s'agit d'un generateur automatique de noms pour personnages de jeux de roles) :
void namegenerator(); // Genere des noms au hasard (PNJs, monstres, etc...)
{
srand((unsigned) time(NULL));
int b = (rand()%5);
char syllabe[4]="";
switch (b)
{
case 0:
{
syllabe="jin";
break;
}
case 1:
{
syllabe="mar";
break;
}
case 3:
{
syllabe="tol";
break;
}
case 4:
{
syllabe="gul";
break;
}
case 5:
{
syllabe="kadh";
break;
}
};
int a = (rand()%2)+2;
switch (a)
{
case 2:
{
for(int a=1; a<2; a++){
pnj_nom=pnj_nom+syllabe;}
break;
}
case 3:
{
for(int a=1; a<3; a++){
pnj_nom=pnj_nom+syllabe;}
break;
}
case 4:
{
for(int a=1; a<4; a++){
pnj_nom=pnj_nom+syllabe;}
break;
}
case 5:
{
for(int a=1; a<5; a++){
pnj_nom=pnj_nom+syllabe;}
break;
}
};
};
vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006 11 juil. 2002 à 11:53
le malheur continue de s'abattre sur moi, car dans mes headers, le
#include <ctype.h> // il le trouve sans probleme
mais le
#include <ctype> // il me dit qu'il ne le trouve pas
Si quelqu'un pouvait me fournir ce fichier j'en serais reconnaissant (et m'expliquer dans quel repertoire je dois le copier)
parce que mon projet nécéssite ce fichier (pour la fonction srand() je suppose, vu que c la que ca plante)
merci
@+(et je suis sous VC++ 6.0)
vanpet
Messages postés149Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention 5 février 2006 11 juil. 2002 à 14:10
J'ai trouvé le bug tout seul comme un grand ;-)
ca n'avait rien a voir avec les header (l'aide de microsoft est vraiment tres mal foutu, parce qu'ils me disaient "header missing")
en fait j'avais fait une fonction nommée :
void namegenerator();
{
// blablabla...
}
et il fallait pas mettre de ";" derriere les "(" ")" !
voila
merci quand meme pour votre aide !
@+
cs_ProGamer
Messages postés44Date d'inscriptionjeudi 11 juillet 2002StatutMembreDernière intervention 1 février 2022 15 juil. 2002 à 14:57
En fait, sous VB aussi il peut y avoir 3 paramètres pour la boucle for.
En VB, c'est:
For VARIABLE = [ETAT INITIAL] To [ETAT FINAL] Step [INCREMENTATION]
En C++, c'est:
for (VARIABLE = [ETAT INITIAL]; [TEST]; [INCREMENTATION])
Le TEST est l'équivalent de l'ETAT FINAL. Au lieu de spécifier un nombre, on indique une condition qui, si elle est vraie, fait se poursuivre la boucle.
L'INCREMENTATION indique de combien modifier la variable à chaque boucle. En VB, c'est un nombre positif ou négatif, en C++, c'est un calcul qui modifie la valeur de la variable.
Les boucles sont aussi faciles à manipuler qu'en VB, mais elles sont plus complètes. Il suffit juste d'être un peu plus rigoureux, pour éviter de faire une boucle infinie.
Quelques exemples...
Pour:
For I = 0 To 7
ou For I = 0 To 7 Step 1
On a:
for (i=0;i<=7;++i) (celle-là c'est la meilleure)
ou for (i=0;i<=7;i++)
ou for (i=0;i<=7;i+=1)
ou for (i=0;i<=7;i=i+1)
Par contre, pour:
For I = 0 To 7 Step 2
On a:
for (i=0;i<=7;i+=2)
ou for (i=0;i<=7;i=i+2)
Tiens, voilà que je m'improvise professeur... (heu, ceux qui connaissent bien le C++, qu'est-ce que vous pensez de ça ?)