Salut...
Vala, je me heurte à un nouveau problème...
Je souhaite crée un prog assez simple :
L´utilisaeur entre n nombre de nombres et le prog les ranges par ordre croissant...
Mais je ne vois absolument pas la méthode que je pourrez utilisé...peut être for(;;)...bref j´ai besoin d´aide...
Merci ![]()
Si tu ne sais pas comment trier les nombres par ordre croissant.
Peut etre sais tu faire une partie du travail ?
Je me permet de upper ce topic
En faite j´aimerai crée un Texte RPG 100% en mode conso...J´ai déjà le système de combat fini et le synopsis de l´histoire...
Mon problème c´est que quand on bombarde le prog de printf ou de cout << le texte apparait de façon barbare : d´un coup !
Moi j´aurai voulu un défilement progressif, qui serai beaucoup plus agréable pour suivre le jeu dans les conditions du mode conso...
Comment faire ?
pour trier les nombres, je t´ai uploadé un texte que j´ai écrit il y a très longtemps :
http://wall.sectionpc.info/C/algo1_tri.cpp
je ne l´ais jamais considéré comme terminé, et là je ne l´ai même pas relu. Mais normallement, il est pas trop mauvais.
pour ton problème de cout, place un sleep(500) entre chacun pour patienter une demi seconde entre chaque ligne (ou plus si tu veux). Si tu est sous linux, il faut utiliser usleep(500) (ou msleep ?)
Merci beaucoup ![]()
Nan ton sleep(500); ne fonctionne pas...
C´est bon j´ai trouvé...
Sleep(500) et non sleep(500)
J´aurai une autre question : je souhaite crée un jeu tout con : un jeu de mémoire. Je m´explique, l´ordi sort 2 nombre, efface ces nombres au bout de 3 seconde puis nous demande de les rerentré.
Maitenant j´aimerai qu´il sorte 3 nombres, puis 4 , puis 5, puis 6 etc...jusqu´a une erreur...
Par contre je vois pas du tout quel algorythme je vais adopté pour recrée des variable avec une boucle...
Help, je trouve pas...
Un indice ? ![]()
Prends un papier et un crayon, et reflechis ![]()
un tableau d´entier ?
Reeeeee...
Me revoila avec de nouveaux problemes de débutants
Alors, j´ai un probleme avec la fonction rand()...
Vala, quand je lance le programme, j´ai bien un nombre aléatoire, mais c´est souvent le même repris a plusieurs fois :
Exemple :
3
3
7
7
7
1
12
12
12
10
10
10
10
10
5
etc...
Je comprends pas trop pourquoi...
J´ai utilisé le basique :
srand(time(NULL));
carte = (rand() % (MAX - MIN + 1)) + MIN;
L´utilité c´est pour crée un p´tit blacjack...vala...
attention, srand tu dois l´utiliser qu´une seul fois dans le code et non à chaque fois que tu utilise rand().
Oui j´ai remarqué que quand je l´utilisé a chaque fois ça metté la même chose...
Donc je l´es mis qu´une seule fois, ça me fait ça regardé :
srand(time(NULL));
carte1 = (rand() % (MAX - MIN + 1)) + MIN;
carte2 = (rand() % (MAX - MIN + 1)) + MIN;
/* Création des deux premieres cartes*/
quelques lignes de codes...
...
carte3 = (rand() % (MAX - MIN + 1)) + MIN;
carte4 = (rand() % (MAX - MIN + 1)) + MIN;
/* BANQUE : Création des deux premieres cartes*/
Vala...
Je suis sur X-Code (Macintosh), et quand je met Run, ca me met entre 3 et 6 fois la même chose avant de changer, alors c´est peut être du au fonctionnement de Run et de la gestion de la fonction rand() ?
On ne doit pas utiliser rand avec modulo.
il est préférable de se ramener a une variable entre 0 et 1 que l´on multiplie apres (cf la man page de rand et le chapitre de "numerical recipes").
PLus un truc comme:
float toto = ((float)rand())/RAND_MAX;
int ret = toto * (MAX-MIN) + MIN;
Si tu fais plusieurs appel a srand(time(NULL)); tu obtiendra plusieurs fois la meme graine (puisque dans la meme seconde (cf man time)) et donc plusieurs fois le meme résultat.
Hum...
srand varie donc en fonction du temps ?
Je vais essayé ta technique...par contre a quoi correspond RAND_MAX et ret ?
Désolé du double post...
J´aimerai savoir un truc, j´aimerai la fonction random avec des probabilité de sorti différente...
Par exemple j´aimerai que sorte :
2
3
4
5
6
7
8
9
10
10
10
10
11
tu veux un résultat entre 2 et 11.
regarde la formule de godrik :
float toto = ((float)rand())/RAND_MAX;
int ret = toto * (MAX-MIN) + MIN;
ici, tu mets donc MIN = 2 , MAX = 11
et ret sera un nombre entre 2 et 11
RAND_MAX est une constante de stdlib.h : elle existe, tu n´as pas a la définir. C´est la constante qui donne la valeur maximale du rand() qui peut changer d´un systeme a l´autre. Mais avec cette formule, ça marchera sur tout systeme.
Cette formule est mieux, cette fois c´est toujours le même nom qui apparait
using namespace std;
int main (int argc, char * const argv[])
{
int MAX = 12;
int MIN = 2;
float toto = ((float)rand())/RAND_MAX;
int ret = toto * (MAX-MIN) + MIN;
cout << ret;
return 0;
}
Compiler sur Xcode ça me met :
2
Et je recommence ça fait toujours des 2...que des 2... ![]()
n´oublie pas :
srand(time(NULL)); // #inclue <time.h>
au début de ton programme.
Si tu consideres le random comme un sac dans lequel tu tires des jetons, le srand(time(NULL)) "brasse" le sac : sinon, tu as toujorus la meme séquence.
Il s´appuie sur le temps du PC pour brasser le sac : ça, ça dépend des algos théoriques du rand qu´il y a derriere !
Erf...toujours pareil...
using namespace std;
int main (int argc, char * const argv[])
{
int MAX = 12;
int MIN = 2;
srand(time(NULL));
float toto = ((float)rand())/RAND_MAX;
int ret = toto * (MAX-MIN) + MIN;
cout << ret;
return 0;
}
Ca m´affiche toujours 2, 2, 2, etc... ![]()
int main(int argc, char *argv[])
{
srand(time(NULL));
int n=0;
n= (rand() % (MAX - MIN + 1 )) + MIN;
printf("%d",n);
system("pause");
return 0;
}
j´ai jamias le meme resultat essaye ca