Fonction random avec les données d'un tableau

djaneu - 11 déc. 2007 à 16:05
 djaneu - 11 déc. 2007 à 16:33
Bonjour,

Je travaille avec C++ builder

Je souhaite créer un petit programe qui me permet d'afficher dans un champ Edit les valeurs qui se trouvent dans un tableau et qui auront été choisi de facon aléatoire entre 1 et 6 en fonction d'un numéro que j'aurais entré dans un autre champs edit.
Mon problème se passe au niveau de la génération des variables de mon tableau je n'arrive pas à le faire.

Voici mon code :


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ufmMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfmMain *fmMain;

int iTableau[10];
int iEleve;
int iNote;


//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
: TForm(Owner)
{

}
//---------------------------------------------------------------------------
void __fastcall TfmMain::buNoteClick(TObject *Sender)
{
iEleve=StrToInt(edEleve->Text);
iNote=iTableau[iEleve-1];
edNote->Text=iNote;

}
//---------------------------------------------------------------------------
void __fastcall TfmMain::buGenererClick(TObject *Sender)
{
Randomize();

iTableau[10]=(rand() % 6+1);
edTest->Text= iTableau[10];
return;
}
//---------------------------------------------------------------------------

Je vous remercie déjà d'avoir pris votre tems pour me lire et j'espère qu'il vous en reste encore un peu pour m'aider .D'ores et déjà je vous remercie.

Djaneu
A voir également:

2 réponses

reltak Messages postés 261 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 14 janvier 2012 41
11 déc. 2007 à 16:13
Salut,

void __fastcall TfmMain::buGenererClick(TObject *Sender)
{
Randomize();

iTableau[10]=(rand() % 6+1);
edTest->Text= iTableau[10];
return;
} 


Laisse-moi douter...

Tu déclares en haut un tableau de 10 entiers, ce qui ne fait que réserver une zone mémoire.
si tu fais iTableau[10], ceci va chercher le 11e élément de ta liste, car les listes en C++ commencent à 0 !!

De plus, si tu souhaites remplir ton tableau, il va te falloir une boucle qui affecte chaque élément du tableau avec une valeur randomisée du style :

void __fastcall TfmMain::buGenererClick(TObject* Sender)
{
Randomize();

for(int i=0;i<10;i++)
{
iTableau[i] = (rand()%6)+1; // Pour chaque élément du tableau, je crée un nouveau nombre aléatoire
edTest->Text = edTest->Text + " " + IntToStr(iTableau[i]); // et si j'ai bien compris ce que tu veux faire il s'affiche dans la zone Edit à la suite des autres déjà présents
}
}


Reltak.
1
Merci pour ton aide, une seule différence entre ce que tu a fais et ce que je voulais je veux seulement afficher les nombre tirés aléatoirement et non pas tous. J'ai modifié la dernière ligne et j'ai mis

edTest->Text =IntToStr(iTableau[i]);
0