débutante en programmation cherche de l'aide

débutante en programmation cherche de l'aide - VB/VBA/VBS - Programmation

Marsh Posté le 06-05-2005 à 18:05:13    

Au secours,
Je suis en plein apprentissage de programmation VB, et on va dire que ce n'est pas gagné... après 4 h  de cours théorique...difficile de faire des as de la programmation. Si quelqu'un peut m'aider à réaliser une programmation sur le problème ci-dessous de façon à ce que je le comprenne ce serait vraiment sympa.
 
Merci
 
LILI
 
Problème : Elaboration d’un planning pour atelier à débit de produit
 
Objectif : Planification de fabrications de N phases mettant en jeu M moyens utilisés en séquentiel.
 
L’algorithme de Johnson généralisé s’applique aux fabrications dont le processus de production est séquentiel et composé de plus de 2 postes. (sinon appliquer l’algorithme de Johnson simple). Il peut s’appliquer aux fabrications en ligne, même si tous les postes de charge ne sont pas utilisés.
 
Algorithme :
 
• Pour chaque fabrication :
o Faire la somme des phases (N) ;
o Calculer x = N – dernière phase ( = somme des n-1 premières phases) ;
o Calculer y = N – première phase ( = somme des n-1 dernières phases) ;
o Calculer k = x / y ;
• L’ordre de fabrications est défini par l’ordre croissant du rapport k
 
Ecrire et implanter un algorithme qui donne l’ordre de passage des produits. On utilisera pour cela 2 tableaux TAB1 contenant le rapport k et TAB2 contenant les numéros de produits. Lors du tri de TAB1, les manipulations réalisées sur TAB seront également réalisées sur TAB2. Il ne restera donc plus qu’à afficher TAB2. Quelles sont les limites de cet algorithme ?
 
Exemple : 4 produits passant 3 machines
 
 P1 P2 P3 P4
M1 15 18 10 11
M2 12 9 15 15
M3 8 14 12 14
 
 
Les valeurs de k donnent  
(15 + 12) / (12 + 8) = 1.35 pour le produit 1
1.17 pour le produit 2
0.92 pour le produit 3
0.89 pour le produit 4
 
On en déduit l'ordonnancement suivant (ordre croissant de k)
 
N° produit  
4  
3  
2  
1
 
 
 
 
 

Reply

Marsh Posté le 06-05-2005 à 18:05:13   

Reply

Marsh Posté le 06-05-2005 à 18:06:13    

poste le code du programme que tu as commencé à faire stp


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-05-2005 à 18:18:35    

Harkonnen a écrit :

poste le code du programme que tu as commencé à faire stp


 
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 d’une liste
On considère une liste d’entiers 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 d’un tableau d’entiers 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 d’un tableau d’entiers
- Problème de tri
On dispose de N = 30 valeurs numériques que l’on désire classer par ordre croissant (on aurait pu choisir décroissant).
 
Chacune de ces valeurs sera choisie aléatoirement dans l’intervalle [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 l’aide 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.
 
L’algorithme s’arrête quand il n’y 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 l’on permute avec TAB[1].
 
Puis sur les N - 1 éléments restants, on cherche le deuxième minimum que l’on permute avec TAB[2].
 
Etc…
 
 - Tri par insertion
Insérer une valeur V à la place j d’un 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 d’insé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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed