Probleme de programation C++

Fermé
pinpin - 8 mai 2004 à 19:39
 pom - 14 avril 2005 à 09:22
Bonjour a tous...
Je suis nouveau en programation , j'ai kan meme les bases...
Je voudrais réaliser un jeu de mémory (but : découvrir des paires parmis des cartes retournées)
Mon problème est que pour ce faire, j'aurai besoin de placer les nombre de 1 à 35 de manière aléatoire dans un tableau, sans qu'il se répètent, et faut qu'ils y soient tous.
Je n'ai pas trouvé ma réponse dans la partie C++ du site (peut etre pas su la trouver) ... si vous pouviez m'aider ou me conseiller,
Merci d'avance.

7 réponses

yann59 Messages postés 87 Date d'inscription samedi 14 décembre 2002 Statut Membre Dernière intervention 25 août 2009 14
9 mai 2004 à 12:22
Bon j'ai pas trop d'idée de génie pour toi, mais j'ai une idée à la con.
Tu définis un tableau de 1 à 35 , ensuite :
Tab[1] = 1
Tab[2] = 2
Tab[3] = 3
.....
Tab[35] = 35

Ensuite, tu effectuesune boucle de 1 à 35 (pour passer dans chaque case de ton tableau). Tu effectues un Random de 1 à 35 et là tu inverseras le chiffre de ta position actuelle avec celui du Random.
Exemple algorithmique :
================

Pour i = 1 jusque 35
position = random(1,35)
buffer = tab[i]
tab[i] = tab[position]
tab[position] = buffer
i = i+1
Fin_Pour

Bon je sais pas si c'est ce que tu voulais, c'est peut etre pas optimale non plus mais ça me plait!!

:-p

Yann
0
Je te remercie beaucoup pour ta solution, c'est bon je suis arrivé à faire mon tableau nikel!!!
Merci encore et a plus
0
bonjour
J'ai une question pour l'oteur de se message ( à pinpin )
Quel compilateur utilise tu pour compiler en c++?
mersi d'avance

ps tu peux me répondre par mail
0
Salut!!!
je travail avec C++ builder 6. C'est pour un projet à l'école.
0
j ai un syteme d equations différentielles couplées de types

d2(y)/d(t2)= d(x)/dt sin(a)

d2(x)/d(t2)= - d(y)/dt sin(a)

avec a qui varie a= y/r

avec r= contante conue.


je cheche a résoudre ce probleme numériquement sur c++
par la méthode de Rung kutta ( ou euler).

j ai besoin de votre aide car je sui débutant sur le c++
0
Salut,
commence déjà par écrire ce que tu as fait et ensuite on t'aidera. Surtout que là, tu ne dis même pas où se trouve ton problème.
0
bonjour a tous;
je souhaite connaitre comment génèrer un nombre aléatoire dans un intervale donné (entre 2 nombres) en C++ builder 6.
merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut

#include<iostream>
#include<cstdlib> // pour avoir la constante RAND_MAX
#include<cassert>
using namespace std;

int main()
{
const double a=2;
const double b=7;

asser(b>a);

for(int i=0;i<20;i++) cout<<(double)rand() / (double)RAND_MAX *(b-a)+a<<endl;
return 0;
}

explications : quand tu fais rand(), tu obtiens un ENTIER entre 0 et RAND_MAX. Donc quand tu fais rand()/RAND_MAX tu effectues une division entre 2 ENTIERS donc tu obtiens 0. C'est pourquoi tu dois convertir en double afin d'effectuer une division de DOUBLE.

Tu ramène ton intervalle [a,b] à [0, b-a].

(double)rand() / (double)RAND_MAX *(b-a) te renvoie un nb aléatoire entre a et b-a.
Puis tu rajoute a à ton nombre afin de revenir entre a et b d'où le "+a" à la fin
0
excuse, j'ai fait une erreur de frappe

assert(b>a) et non asser(b>a)
0
Hou la la, je ne me suis pas bien relu. J'ai fait une autre faute :

(double)rand() / (double)RAND_MAX *(b-a) te renvoie un nb aléatoire entre A et b-a. (avant j'avais écrit "entre a et b-a")
0