Les tableaux 2D (exercice)

kingston2 Messages postés 145 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, J'ai un exercice à finir , mais je suis bloqué.... Voici l'exercice en question:

Une entreprise commerciale décide de récompenser ses clients potentiels à la fin de chaque année. À cet effet, les gestionnaires ont créé un système de ristourne selon le montant d'achat mensuel de chaque client. Ce dernier se calcule selon le tableau suivant :

Montant d'achat mensuel Le taux de la ristourne
Montant <= 500 0 %
500<Montant <= 1000 5 %
Montant > 1000 10 %

Écrivez le programme Visual Basic qui calcule et affiche le montant total du ristourne pour chacun des 10 clients de l'établissement.

Voici mon travail jusqu'à maintenant:
Module Module1



    Sub Main()
        Dim tabvaleurs(10, 3)
        Dim intmontant As Integer
        Dim inttaux As Integer
        'remplissage du tableau
        For ligne = 0 To 10
            For colonne = 0 To 3
                tabvaleurs(ligne, colonne) = InputBox("Entrez votre montant d'achat:")


            Next
        Next
        'affichage du tableau
        For ligne = 0 To 10
            For colonne = 0 To 3
                Console.Write(tabvaleurs(ligne, colonne) & vbTab)

            Next

            'attribution des ristournes
            For Each valeur In tabvaleurs
                If valeur >= 1000 Then
                    inttaux = 0.1

                ElseIf valeur >= 500 Then
                    inttaux = 0.05

                Else
                    inttaux = 0
                End If
                Console.WriteLine("le montant de ristourne est de:" & intmontant * inttaux)
            Next





        Next
    End Sub

End Module


Pouvez-vous m'aider à finir ce problème ? Merci

3 réponses

  1. kingston2 Messages postés 145 Statut Membre
     
    est-ce que je me suis planté dans l'affichage de mon tableau ?
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,

    A première vue, je vois plusieurs "erreurs".

    1- On parle de chaque année, avec une remise mensuelle. Il te faut donc les montants de chacun des 10 clients pour chaque mois...
    Donc, remplace :
    Dim tabvaleurs(10, 3)

    par :
    Dim tabvaleurs(10, 12)


    2- Tu dois trouver le montant total de la remise. Il te faut donc additionner les remises mensuelles. Dans ton code, je ne vois pas du tout d'addition...

    3- Je t'ai déjà parlé de Randomize qui te permet de trouver des nombres aléatoirement plutôt que de les saisir. Utilise le car sinon tu va avoir 120 saisies à réaliser en début de code...
    Exemple : pour obtenir un nombre compris entre 1 et 1500 :
    Dim maval As Integer
    Randomize
    maval = Int(Rnd * 1500) + 1


    Fais déjà cela, et reviens avec ton code...
    0
  3. kingston2 Messages postés 145 Statut Membre
     
    Voici ce que j'ai :

    Module Module1
    
    
    
        Sub Main()
            Dim tabvaleurs(10, 12)
            Dim intmontant As Integer
            Dim inttaux As Integer
            Dim intmontanttotal As Integer
            Dim maval As Integer
            'remplissage du tableau
            For ligne = 0 To 10
                For colonne = 0 To 12
    
                    Randomize()
                    maval = Int(Rnd() * 15000) + 1
    
                Next
            Next
            'affichage du tableau
            For ligne = 0 To 10
                For colonne = 0 To 3
                    Console.Write(tabvaleurs(ligne, colonne) & vbTab)
    
                Next
    
                'attribution des ristournes
                For Each valeur In tabvaleurs
                    If valeur >= 1000 Then
                        inttaux = 0.1
    
                    ElseIf valeur >= 500 Then
                        inttaux = 0.05
    
                    Else
                        inttaux = 0
                    End If
                    Console.WriteLine("le montant de ristourne est de:" & intmontant * inttaux)
                Next
    
    
                'montant totale de la remise
                intmontanttotal = intmontant + (intmontant * inttaux)
                Console.WriteLine("le montant totale de la remise est de:" & intmontanttotal)
    
    
            Next
        End Sub
    
    End Module
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,

      Je ne suis pas sur que tu fasses tous les efforts nécessaires à la réalisation de ce code. J'ai le sentiment que tu attends la réponse...
      J'en veut pour preuve que tu n'as même pas fait l'effort de remplacer tous les 3 par des 12 :
       'affichage du tableau
      For ligne = 0 To 10
      For colonne = 0 To 3

      De plus, dans le remplissage du tableau,... tu ne remplis même pas ta variable tableau :
              'remplissage du tableau
      For ligne = 0 To 10
      For colonne = 0 To 12

      Randomize()
      maval = Int(Rnd() * 15000) + 1

      Next
      Next

      Pour ma part, si tu ne fais pas plus d'effort, j'arrête le suivi de tes discussions;..
      0