Glaudiuus
Messages postés7Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention16 février 2007
-
31 janv. 2007 à 23:24
Glaudiuus
Messages postés7Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention16 février 2007
-
3 févr. 2007 à 21:14
Bonjour,
J'ai un tableau à deux variables rempli de"0" et je souhaiterai qu'il me mette aléatoirement des "1" dans un certain nombre de cases. Comment est ce que je peux faire une cette fonction aléatoire ?
Ensuite encore une petite question, comment trouver le min et le max d'une série de nombres, puis comment la trier ?
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 31 janv. 2007 à 23:34
Bonsoir,
Je ne te dirais pas tout, car cela un peu trop long. Dès qu'on parle de nombre aléatoire, il faut penser à la fonction RND. (et RANDOMIZE TIMER...). C'est une première piste... Recherche déjà cela.
Pour le min et max, il suffit de passer en revue chaque valeur des tableaux et de stocker dans une variable le min ou dans une autre la Max... avec un simple emploi d'une comparaison avec IF...
DD05
Messages postés53Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention11 juin 20101 31 janv. 2007 à 23:41
Salut,
Par tableau à 2 variables, tu entends surement tableau à 2 dimensions (une matrice en fait).
Pour trouver les nombres aléatoires, il faut utiliser la fonction RANDOM. Va voir sur le site c'est expliqué.
Il faut juste que tu fasses un Random sur les lignes et les colonnes de ta matrice.
Par exemple si tu as un tableau de 10 lignes et 5 colonnes, il faut que
tu lances un Random sur les nombres de 0 à 10 pour trouver une ligne au
pif et un random sur les nombres compris entre 0 et 5 pour trouver une
colonne.
Une fois que tu as une ligne et une colonne obtenue au pif, tu mets un 1 dans la case correspondante.
Tu répètes l'opération autant de fois que tu désires mettres de "1".
Pour trouver le min et le max c'est aussi expliqué sur le forum. Cherche tu trouveras
Glaudiuus
Messages postés7Date d'inscriptionmercredi 31 janvier 2007StatutMembreDernière intervention16 février 2007 3 févr. 2007 à 19:03
Merci,
Pour utiliser la fonction aléatoire fonctionne très bien merci !
Par contre pour trouver le min et le max d'une série de nombre je ne
trouve rien à mon niveau... j'ai un niveau débutant ... et la seule
solution serais de comparer chaque nombre, mais celà devient très long
pour une grande série, y aurait-il une autre méthode ?
Et pour trier la série je vois encore moins comment je pourrais faire ?
Je maitrise seulement les fonctions de base et je dois faire sa avec
les moyens que j'ai pour les cours et je ne vois pas comment faire...
Si vous pourriez me donner un petit coup de main ? Merci
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 3 févr. 2007 à 19:31
Bonjour,
Pour le min et max, il n'y a pas d'autres moyens que de passer toutes les valeurs en revue... Mais en géénrale on se débrouille pour faire cette opération en même temps qu'on passe en revue les valeurs pour autre chose...
En gros cela donne un truc du genre :
Sub ess()
Dim tabl(100)
'Création tableau de valeurs aléatoires
For t = 1 To 100
tabl(t) = Int(Rnd * 100)
Next t
'Valeur max et min
Mini = 102
Maxi = 0
For t = 1 To 100
If Maxi < tabl(t) Then Maxi = tabl(t)
If Mini > tabl(t) Then Mini = tabl(t)
Next t
MsgBox "Le maxi :" & Maxi & vbCrLf & "Mini :" & Mini
End Sub
Pour le tri, il faut utiliser Qsort, c'est le seul vraiment rapide :
Voici son code de base à modifier en fonction de tes bessoins :
Sub QSort(t() As Long, Deb As Long, Fin As Long)
'TRI QUICKSORT RECURSSIF (TRI RAPIDE)
'Source : Livre QBASIC de Micro Application
'Déclaration des variables
Dim i As Long 'indice
Dim j As Long 'indice
Dim X As Long 'valeur pivot
Dim Temp As Long 'Valeur temporaire
'Algo Tri
i = Deb 'sauve le début
j = Fin 'sauve la fin
X = t((i + j) \ 2) 'valeur pivot
Do
Do While t(i) < X: i = i + 1: Loop 'recherche par la bas
Do While t(j) > X: j = j - 1: Loop 'recherche par le haut
If i <= j Then
Temp = t(i) 'inversion t(i) et t(j)
t(i) = t(j)
t(j) = Temp
i = i + 1 'Passe au suivant
j = j - 1
End If
Loop Until i > j
If j > Deb Then QSort t(), Deb, j 'trie par le bas
If i < Fin Then QSort t(), i, Fin 'trie par le haut
End Sub
Amicalement,
Us.
Vous n’avez pas trouvé la réponse que vous recherchez ?