Probleme de programation C++
pinpin
-
pom -
pom -
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.
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.
A voir également:
- Probleme de programation C++
- Programation - Forum Programmation
- Programation - Forum Programmation
- Logiciel de programation - Forum Programmation
- Debuter en programation ✓ - Forum Programmation
- The following component(s) are required to run this program microsoft visual c++ runtime ✓ - Forum Programmation
7 réponses
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
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
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
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
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++
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++
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.
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.
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
#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
Merci encore et a plus