Fonction rand dans un tableau 2d en c

Fermé
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007 - 19 déc. 2007 à 19:55
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 - 20 déc. 2007 à 11:21
Bonjour,
pouvez-vous m'aider à initialiser un tableau a 2 dimensions de maniere aléatoire?

15 réponses

Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
19 déc. 2007 à 20:00
Pour un tableau 10x10 :

int tableau[10][10];

Ca te donne un tableau. Il y a des chances d'avoir des résidus "aleatoires" dans ce tableau. Mais si vraiment tu veux quelque chose de plus aléatoire, tu peux utiliser les fonctions rand() et srand()...

Dis-moi quel est ton niveau en C ?

Est-ce que tu veux la solution toute prete toute machée ?
Ou au contraire, es-tu pret(e) a chercher un peu ?

a+
-Qwerti.
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
19 déc. 2007 à 20:44
si tu sait utiliser la fonction rand() apres il faut que tu remplisse chaque case du tableau en le parcourant avec deux boucle for et dans chaque case tu met un nombre aleatoire avec rand()

bonne chance ;)
0
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007
19 déc. 2007 à 21:15
Je suis débutante en programmation mais je suis pleine de bonne volonté
Voici, mon programme :

#include <iostream>
#include <algorithm>
#include <time.h>
using namespace std;
#define N 6
#define M 6
int main()
{
int i,j;
srand(time(NULL));
char tab[N][M] = {{'a','b','c','d','e','a'},{'a','b','c','d','e','a'}};
rand(M,N,tab*);
for(i = 0; i < N; i++){
for(j = 0; j < M; j++){

cout << tab[i][j] << " | ";
}
cout << endl;
return 0;
}
}
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
19 déc. 2007 à 21:21
ça ressemble plutot a du C++ ça...
ton exo c'est en C ou C++ ?
0

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

Posez votre question
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007
19 déc. 2007 à 21:23
en c++
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
19 déc. 2007 à 21:28
lol
c'est bien ce que je me disais...
dsl je connais pas la syntaxe exact du C++
mais a mon avis tu devrais pas initialiser le tableau au debut
et qd tu tire un nombre du lui affecte une letre par(exemple si tu a "1" tu considere que c'est "a" etc...)

ps : tu devrais peu etre changer le titre de ton post pour que des gens qui s'y connaissent mieux en C++ puisse t'aider

bonne chance ;)
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
19 déc. 2007 à 21:48
#include <iostream>
using namespace std;

#define N 6
#define M 6

// Table des caracteres :

#define TableLength 5
char* table[TableLength]={"a","b","c","d","e"};

int main(){
int i,j;
char* tab[M][N];
srand(time(NULL));

//Initialisation du tableau :
for(i = 0; i < N; i++) for(j = 0; j < M; j++) tab[i][j]=table[(rand()*TableLength)/RAND_MAX];

for(i = 0; i < N; i++){
for(j = 0; j < M; j++){
cout << tab[i][j] << " ";
}
cout << endl;
}
return 0;
}


C'est mieux comme ca !

Si tu as besoin d'explications je te les fournirai sans probleme !

a+
-Qwerti.
0
Merci beaucoup pour ta correction. ça m'a permis de faire mon affichage.
Voici le code :
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

#define N 6
#define M 6

// Table des caracteres :

#define TableLength 5
char* table[TableLength]={" a "," b "," c "," d "," e "} ;

int main(){
int i,j;
char* tab[M][N];
srand(time(NULL));

//Initialisation du tableau :
for(i = 0; i < N; i++) for(j = 0; j < M; j++) tab[i][j]=table[(rand()*TableLength)/RAND_MAX];

for(i = 0; i < N; i++){
cout <<" +---+---+---+---+---+---+"<< endl;
cout <<6-i<< "|";
for(j = 0; j < M; j++){

cout << tab[i][j]<< "|";
}
cout << endl;
}
cout <<" +---+---+---+---+---+---+"<< endl;
cout <<" a b c d e f"<< endl;
return 0;
}

Maintenant, il faut que je m'attaque au fond.
Je dois construire un marble...
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
20 déc. 2007 à 00:47
Ravi d'avoir pu t'aider...

Mais, euh, paronne mon ignorance, c'est quoi un marble ?

a+
-Qwerti.
0
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007
20 déc. 2007 à 01:01
c'est un solitaire dont le but est de supprimer un nombre maximum de billes (ici ce sont des lettres) en un minimum de coup.
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
20 déc. 2007 à 01:02
Ah cool ! :-)

C'est quoi la condition pour pouvoir supprimer les billes ?
0
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007
20 déc. 2007 à 01:22
il faut selectionner des lettres sur le plateau en notant leur coordonée (ex: 2f ou f2). Pour que le coup soit valide, la bille sélectionnée doit etre voisine d'au moin 1 bille de meme couleur (ici se sont des lettres). les billes voisines sont celle situé au dessus, en dessous, à droit et a gauche ( diagonale non admise) de la bille sélectionnée.
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
20 déc. 2007 à 01:44
Ah d'accord !

Donc dans ce cas tu elimines toutes les billes qui on la meme lettre, d'un coup, c'est ca ?

Ex :

abace
cecad
cceba
cdcab

devient (j'elimine les c en bas a gauche --- je mets des points a la place)

ababe
.ecad
..eba
.dcab

Et justement, on en fait quoi des points maintenant ? Ils restent comme ca, cases vides ? Mais alors je ne pourrais jamais eliminer les deux c qui restent... :-/

Bon, en tout cas ca a l'air rigolo...

Tiens-nous au courant de tes avancées !

a+
-Qwerti.
0
tatouprog Messages postés 6 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 20 décembre 2007
20 déc. 2007 à 09:28
Les billes subissent un mouvement de gravité puis s'il y a des colonnes entierement vides un tassement vers la gauche.
Dans ton exemple, le tableau donnerai :

. . abe
. bcad
. eeba
adcab
0
Qwerti Messages postés 166 Date d'inscription dimanche 2 septembre 2007 Statut Membre Dernière intervention 28 octobre 2008 85
20 déc. 2007 à 11:21
Ahhh d'accord ! Merci pour l'info tatouprog !

Alors je te souhaite bonne chance avec la programmation du Marble :-)

a+
-Qwerti.
0