Structure avec un tableau en mémoire [Résolu]

Messages postés
13
Date d'inscription
samedi 18 mai 2019
Statut
Membre
Dernière intervention
11 novembre 2019
-
Bonjour,
Je dois créer un programme permettant, une fois la saisie des données effectuée, un affichage ligne à ligne des saisies. Je dois utiliser une structure avec un tableau en mémoire à une dimension.

Au moment de l'affichage, le programme coupe et m'affiche l'erreur "L'index se trouve en dehors des limites du tableau" sur la ligne 24 de mon code.

Module test012
    Structure Produit
        Dim refprod, desiprod As String
        Dim puth As Double
        Dim qteprod As Integer
    End Structure
    Sub main()
        Console.ForegroundColor = ConsoleColor.Yellow
        Dim i As Integer

        Dim infoprod(2) As Produit

        For i = 0 To 2
            Console.Write("Saisir la référence du produit : ")
            infoprod(i).refprod = Console.ReadLine
            Console.Write("Saisir la désignation : ")
            infoprod(i).desiprod = Console.ReadLine
            Console.Write("Saisir le prix unitaire ht : ")
            infoprod(i).puth = Console.ReadLine
            Console.Write("Saisir la quantité en stock : ")
            infoprod(i).qteprod = Console.ReadLine
        Next

        Console.WriteLine("{0} {1} {2}", infoprod(i).refprod, infoprod(i).refprod, infoprod(i).refprod)
        Console.Read()
    End Sub
End Module


Je requiers alors votre aide pour trouver une solution. Merci.

Cordialement,

Jean.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
13945
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2019
319
1
Merci
Bonjour

ton tableau contient, 2 éléments, index 0 et index 1
de la ligne 13 à 22, tu fais un for, qui tourne tant que i est inférieur à 2, donc on passe à la ligne 24 quand i vaut 2, cet index est bien au delà de l'index max

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Arkilym
Messages postés
13
Date d'inscription
samedi 18 mai 2019
Statut
Membre
Dernière intervention
11 novembre 2019
-
Je pensais qu'un index 2 correspondait à 3 éléments (0, 1 et 2), alors que non. Merci de me l'avoir fait remarquer.

Mais même en corrigeant cette erreur, il n'y a pas d'affichage. Le terminal se ferme après la saisie des données. Je ne vois pas où peut être le problème.
Commenter la réponse de Whismeril
Messages postés
13945
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2019
319
1
Merci
Je pensais qu'un index 2 correspondait à 3 éléments (0, 1 et 2), alors que non. Merci de me l'avoir fait remarquer.

Oui c’est bien ça.
Et dans le code que tu as montré, ton tableau ne peut avoir que 2 éléments

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Arkilym
Messages postés
13
Date d'inscription
samedi 18 mai 2019
Statut
Membre
Dernière intervention
11 novembre 2019
-
Bonjour,
Merci pour votre aide et bonne continuation.
Whismeril
Messages postés
13945
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2019
319 -
Houla, je m’aperçois que je n’ai pas été clair.
Un index 2 correspond au 3 eme enregistrement, ce qui posait problème dans ton code c’est qu’il n’y a pas de 3eme enregistrement puisqu’il n’y en a que 2
Commenter la réponse de Whismeril
Messages postés
1962
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2019
74
1
Merci
Bonsoir à vous deux
Effectivement ton tableau n'a que 2 éléménts
Une astuce que j'utilise toujours
Je ne mets pas comme code
Dim infoprod(3) As Produit

mais
Dim infoprod(0 to 2) As Produit


Dans le second cas tu as les bornes inférieures et supérieures du tableau et cela est plus parlant .

Tu dis ne rien voir : regarde ta boucle For = elle va de 0 à 2 pour les 3 produits
En fin de boucle i est donc à 3 lorsque tu as fais les 3 saisies : la saisie 0, la saisie 1 et la saisie 2
Vu que i vaut 3 les affichages ne peuvent se faire ( i va de 0 à 2 )

Essaie ce code et regardesl'image plus bas
Structure Produit
        Dim refprod, desiprod As String
        Dim puth As Double
        Dim qteprod As Integer
    End Structure

    Sub Main()

        Console.ForegroundColor = ConsoleColor.Yellow
        Dim i As Integer
        Dim infoprod(0 To 2) As Produit
        For i = 0 To 2
             ' saisie des informations
            Console.Write("Saisir la référence du produit : ")
            infoprod(i).refprod = Console.ReadLine
            Console.Write("Saisir la désignation : ")
            infoprod(i).desiprod = Console.ReadLine
            Console.Write("Saisir le prix unitaire ht : ")
            infoprod(i).puth = Console.ReadLine
            Console.Write("Saisir la quantité en stock : ")
            infoprod(i).qteprod = Console.ReadLine
            Console.WriteLine()
            ' Affichage des 3 lignes de produit
            Console.WriteLine("{0} {1} {2} {3}", infoprod(i).refprod, infoprod(i).desiprod, infoprod(i).puth, infoprod(i).qteprod)
        Next
        Console.Read()
    End Sub




Ensuite un très bon cours pour VB Net ( bien qu'il date un peu ) : https://plasserre.developpez.com/cours/vb-net/


Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vb95
Messages postés
1962
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2019
74
1
Merci
Bonsoir !
Pas sûr que ceci soit correct au message précédent :

Tu dis ne rien voir : regarde ta boucle For = elle va de 0 à 2 pour les 3 produits
En fin de boucle i est donc à 3 lorsque tu as fais les 3 saisies : la saisie 0, la saisie 1 et la saisie 2
Vu que i vaut 3 les affichages ne peuvent se faire ( i va de 0 à 2 )

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Arkilym
Messages postés
13
Date d'inscription
samedi 18 mai 2019
Statut
Membre
Dernière intervention
11 novembre 2019
-
Bonjour,
Merci pour votre aide, je prends note de ces informations. Je suis bien parti pour un moment de lecture. Bonne continuation.
Commenter la réponse de vb95