Probleme de programation C++

pinpin -  
 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.

7 réponses

  1. yann59 Messages postés 87 Statut Membre 14
     
    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
    1. pinpin
       
      Je te remercie beaucoup pour ta solution, c'est bon je suis arrivé à faire mon tableau nikel!!!
      Merci encore et a plus
      0
  2. Maxime
     
    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
    1. pinpin
       
      Salut!!!
      je travail avec C++ builder 6. C'est pour un projet à l'école.
      0
  3. majid
     
    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
    1. pom
       
      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
  4. foubou
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pom
     
    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
  7. pom
     
    excuse, j'ai fait une erreur de frappe

    assert(b>a) et non asser(b>a)
    0
  8. pom
     
    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