En fait cet exercice je n'ai pas pas trouver comment le commencer car je ne sais pas déjà à la base travailler avec des tableaux à deux entrées.
En fait j'ai fait une partie des exercices qui m'étaient demandés. D'ailleurs il y en a un qui bug. Celui là c'est le dernier exercice.
Je t'envoie tout tu verras ce que tu pourras faire[cpp]
Voici les autres exercices qui m'étaient demandés
Programmes à Réaliser :
I. Minimum / Maximum dune liste
On considère une liste dentiers qui est saisie dans une feuille EXCEL. Par exemple la cellule (3,1) contient la première valeur ; la cellule (3,2) contient la deuxième valeur ; etc ; la cellule (3,n) contient la n-ième valeur.
Ecrire un programme qui récupère les valeurs, les stocke dans un tableau appelé Tab_A et affiche ensuite les valeurs contenues dans Tab_A en ligne n°5.
Ecrire ensuite un programme qui détermine la plus grande et la plus petite valeur dun tableau dentiers Tab_A. Afficher ensuite la valeur et la position du maximum et du minimum. Si le tableau contient plusieurs maxima ou minima, le programme retiendra la position du premier maximum ou minimum rencontré
II. Tri dun tableau dentiers
- Problème de tri
On dispose de N = 30 valeurs numériques que lon désire classer par ordre croissant (on aurait pu choisir décroissant).
Chacune de ces valeurs sera choisie aléatoirement dans lintervalle [0 ; 50] et placée dans un tableau TAB de taille N.
Faites 3 programmes qui effectuent les 3 méthodes de tri suivantes et affichent à lécran le tableau TAB en ligne puis en dessous le tableau TAB trié.
Indication : consultez laide sur la fonction Randomize, Rnd
- Tri bulles
On compare les couples de valeurs TAB[i] et TAB[i+1] pour i variant de 1 à N-1 :
Si TAB[i] > TAB[i + 1 ], on les permute.
Lalgorithme sarrête quand il ny a plus de permutations à effectuer : le tableau TAB est alors trié.
- Tri par recherche des minima successifs
Dans un premier passage, on recherche le minimum du tableau TAB que lon permute avec TAB[1].
Puis sur les N - 1 éléments restants, on cherche le deuxième minimum que lon permute avec TAB[2].
Etc
- Tri par insertion
Insérer une valeur V à la place j dun tableau T déjà trié consiste à décaler vers la droite tous les éléments du tableau à partir de la place i puis à faire T[j] = V.
Pour trier le tableau TAB, il suffit alors dinsérer TAB[i] dans les i-1 premiers éléments déjà triés et placés dans un autre tableau, ceci pour i variant de 1 à N-1
Voici mon travail
Pour le premier exercice
Sub INITIALISER()
'Objectif : Initialiser la liste de 10 entiers saisie en ligne 3
Range("A3 : J3" ).Select
Selection = none
End Sub
Sub AFFICHER_LISTE()
'Objectif : afficher la liste d'entiers saisie en Ligne 5
'Déclarer le Tableau TAB_A et i
Dim TAB_A(1 To 10) As Integer
Dim i As Integer
'Récupérer et stocker dans TAB_A la liste des 10 entiers
i = 1
Do While (i <= 10)
TAB_A(i) = Cells(3, i).Value
i = i + 1
Loop
'Afficher la liste des 10 entiers saisie en Ligne 5
i = 1
Do While (i <= 10)
Cells(5, i) = TAB_A(i)
i = i + 1
Loop
End Sub
Sub MAXI_VALEUR()
'Objectif : Déterminer et afficher la valeur et la postion du Maximum d'un tableau d'entiers TAB_A
'Déclarer un tableau, la valeur MAXI, la position MAX et enfin i
Dim TAB_A(1 To 10) As Integer
Dim MAX As Integer
Dim POSmax As Integer
Dim i As Integer
'Récupérer et stocker dans TAB_A la liste des 10 entiers
i = 1
Do While (i <= 10)
TAB_A(i) = Cells(3, i).Value
i = i + 1
Loop
'Définir la valeur et la postion du maximum
POSmax = 1
MAX = TAB_A(1)
i = 2
Do While (i <= 10)
If MAX < TAB_A(i) Then
MAX = TAB_A(i)
POSmax = i
End If
i = i + 1
Loop
'Afficher la valeur MAX en cellule D9 et la Position MAX en cellule I9
Cells(9, 4).Value = MAX
Cells(9, 9).Value = POSmax
End Sub
Sub MINI_VALEUR()
'Objectif : Déterminer et afficher la valeur et la postion du minimum d'un tableau d'entiers TAB_A
'Déclarer un tableau, la valeur MINI, la position MINI et enfin i
Dim TAB_A(1 To 10) As Integer
Dim MIN As Integer
Dim PosMIN As Integer
Dim i As Integer
'Récupérer et stocker dans TAB_A la liste des 10 entiers
i = 1
Do While (i <= 10)
TAB_A(i) = Cells(3, i).Value
i = i + 1
Loop
'Définir la valeur et la postion du minimum
PosMIN = 1
MIN = TAB_A(1)
i = 2
Do While (i <= 10)
If MIN > TAB_A(i) Then
MIN = TAB_A(i)
PosMIN = i
End If
i = i + 1
Loop
'Afficher la valeur MIN en cellule D8 et la Position MAX en cellule I8
Cells(8, 4).Value = MIN
Cells(8, 9).Value = PosMIN
End Sub
Pour le second exercice : les tris
Sub GENERER_TABLEAU()
'Déclarer un tableau et i
Dim tableau(1 To 30) As Integer
Dim i As Integer
'Générer un tableau d'entiers compris entre 0 et 50
For i = 1 To 30
tableau(i) = Int((50 * Rnd))
Next i
'Afficher ce Tableau en ligne 17
For i = 1 To 30
Cells(17, i) = tableau(i)
Next i
End Sub
Sub TRI_BULLES()
'Déclarer un tableau, un stock temporaire, j, i et le nombre
'de cycles réalisés
Dim tableau(1 To 30) As Integer
Dim stockage_temporaire As Integer
Dim j As Integer
Dim i As Integer
Dim nbre_cycles As Integer
'Repérage du Tableau en ligne 17
For i = 1 To 30
tableau(i) = Cells(17, i)
Next i
'Permuter les valeurs si i > i+1 ou incrémenter
nbre_cycles = 0
Do While j <= 30
' y est un couple de 2 valeurs successives
j = 1
For i = 1 To 29
If (tableau(i) > tableau(i + 1)) Then
'Permutation de i avec i+1
stockage_temporaire = tableau(i + 1)
tableau(i + 1) = tableau(i)
tableau(i) = stockage_temporaire
Else
'Sinon, incrémentation pour comparer les 2 valeurs suivantes successives
j = j + 1
End If
Next i
j = j + 1
nbre_cycles = nbre_cycles + 1
Loop
' Afficher le tableau trié par bulles en ligne 19
For i = 1 To 30
Cells(19, i) = tableau(i)
Next i
'Afficher le nombre de boucles réalisée
Cells(34, 9) = nbre_cycles
End Sub
Sub TRI_SUCCESSIFS()
'Déclarer un tableau, la valeur et la position MINI, un stock
'temporaire, j, i et le nombre de cycles
Dim tableau(1 To 30) As Integer
Dim MIN As Integer
Dim Pos As Integer
Dim stockage_temporaire As Integer
Dim i As Integer
Dim j As Integer
Dim nbre_cycles As Integer
'Repérage du Tableau en ligne 17
For i = 1 To 30
tableau(i) = Cells(17, i)
Next i
nbre_cycles = 0
For i = 1 To 29 'je pense que c'est plus cohérent que i = 1 to 30
' Qu'en penses tu???
MIN = tableau(i)
Pos = i
'recherche du minimum
For j = i + 1 To 30
If MIN > tableau(j) Then
Pos = j
MIN = tableau(j)
End If
Next j
'placer le minimum à la position la + basse
stockage_temporaire = tableau(i)
tableau(i) = tableau(Pos)
tableau(Pos) = stockage_temporaire
nbre_cycles = nbre_cycles + 1
Next i
'Afficher le tableau trié
For i = 1 To 30
Cells(21, i) = tableau(i)
Next i
'Afficher le nombre de cycles
Cells(35, 9) = nbre_cycles
End Sub
Sub INSERTION()
'programme de mon collègue que j'ai modifié mais juste
'les noms des variables et qui ne fonctionne pas ici
'j'abandonne je suis fatiguée
'Déclarer un tableau, la valeur et la position MINI, un stock
'temporaire, j, i et le nombre de cycles
Dim tableau(1 To 30) As Integer
Dim tableau_trié(1 To 30) As Integer
Dim i As Integer
Dim r As Integer
Dim compteur, stock_tempo As Integer
Dim decaler As Boolean
'Repérage du Tableau en ligne 17
For i = 1 To 30
tableau(i) = Cells(17, i)
Next i
'Allez, désolé encore mais je comprend pas pourquoi il s'arrête à la moitié...
'Je te laisse chercher, j'ai un bug neuronale !
'Bonne soirée;
r = 38
For i = 1 To 30
stock_tempo = tableau(i)
decaler = False
For j = 1 To 30 - i
If tableau(j) <= stock_tempo Then
stock_tempo = tableau(j)
compteur = j
decaler = True
End If
Next j
tableau_trié(i) = stock_tempo
For k = compteur To 30 - i
If k = 30 Then
Exit For
End If
tableau(k) = tableau(k + 1)
Next k
For k = 1 To 30 - i
Cells(r, k) = tableau(k)
Cells(r + 1, k) = tableau_trié(k)
Cells(r - 1, 33) = i
Cells(r - 1, 34) = compteur
Next k
r = r + 2
'If decaler = False Then
' i = i - 1
'End If
Next i
'Afficher le tableau trié
For i = 1 To 30
Cells(24, i) = tableau(i)
Cells(23, i) = tableau_trié(i)
Next i
'Afficher le nombre de cycles
Cells(36, 9) = boucle
End Sub
Sub insertion_2()
'Déclarer un tableau, la valeur MINI, un stock temporaire, j et i
Dim tableau(1 To 30) As Integer
Dim tabtrié(1 To 30) As Integer
Dim stockage_temporaire As Integer
Dim i As Integer
Dim j As Integer
'Repérage du Tableau à trier en ligne 17
For i = 1 To 30
tableau(i) = Cells(17, i)
Next i
'Repérage du tableau trié
For j = 1 To 30
tabtrié(j) = Cells(23, j)
Next j
i = 1
j = 1
'Insérer la val du tableauN de la case 1 dans
'tableau trié case 1
stockage_temporaire = tableau(i)
tableau(i) = tabtrié(j)
tabtrié(j) = stockage_temporaire
'Afficher la valeur
Cells(23, 1) = tabtrié(j)
i = 2
j = 1
'Prendre la 2ième valeur de tableau et la comparer à cellq(23,1°
If tableau(i) > tabtrié(j) Then
stockage_temporaire = tableau(i)
tableau(i) = tabtrié(i)
tabtrié(i) = stockage_temporaire
End If
End Sub
Le tri par insertion bug...
Le troisième exercice :
je ne sais même pas le commencer...