Le tableau dynamique des structures C ++





динамический массив структур

Le tableau dynamique des structures, nous analysons l'exemple. Nous devons résoudre le problème suivant: l'utilisateur saisit des données sur les sponsors du projet. à savoir – nom, le nom et le montant des dons. Après chaque application de saisie des données demande: continuer à taper ou non. à chaque fois que, lorsque l'utilisateur sélectionne “procéder” – il est nécessaire d'allouer une portion de mémoire a une structure unique. Ainsi, un tableau dynamique de structures va croître, jusqu'à ce que l'utilisateur suspend l'entrée. après être entré, afficher un tableau avec des informations sur les sponsors à l'écran.

La détermination de la structure est en ligne 5 – 10. Il a annoncé trois éléments prénom, nom de famille, somme. Ci-dessous, les prototypes de fonctions sont déclarées, nécessaire pour résoudre le problème. La première fonction Commanditaire* AddStruct(Commanditaire* Obj, const int montant); va allouer de la mémoire pour les éléments d'un tableau de structures. deuxième vide setData(Commanditaire* Obj, const int montant); est responsable de la saisie des données dans une structure. troisième vide showData(const Commanditaire* Obj, const int montant); – Il affiche toutes les données dans une table. Les définitions de ces fonctions seront discutées ci-dessous.

Pour créer un tableau dynamique des structures, il faut, à créer tableau dynamique habituelle, déclarer un pointeur. Seulement au lieu du type intégré pour spécifier la structure d'une poignée – rangée 20. Ce pointeur est rien sur les points. Il serait possible d'allouer de la mémoire pour un tableau de structures à la fois. par exemple:

динамический массив структур

Mais nous allons organiser une allocation plus flexible de mémoire pour le tableau dynamique des structures – il sera attribué au besoin. Il y a un sponsor – Elle alloue de la mémoire pour une structure. il y a 3 sponsor – la mémoire est allouée d'abord sous une seule structure, puis une seconde, puis une troisième. Tout dépendra – décide si l'utilisateur continue d'entrer.

lignes 21 – 22, variables déclarées sponsorAmount – compter le nombre de sponsors et Oui ou non – sélection par l'utilisateur (continuer ou annuler l'entrée).

lignes 24 – 34: voici le cycle faire pendant. Elle est exécutée jusqu'à ce que, jusqu'à ce que l'utilisateur doit entrer des données. En ligne 26 appeler le, qui alloue la mémoire pour la structure OurSponsors = AddStruct(OurSponsors, sponsorAmount); Abaissé à sa définition dans les lignes 42 – 61. Ici, on peut voir, que cette fonction retourne un pointeur vers une structure Commanditaire. Il prend deux paramètres – un pointeur vers la structure et le nombre de structures. Quand il est appelé pour la première fois – il va envoyer une annonce dans Principal aiguille OurSponsors et variable sponsorAmount, qui est égal à zéro. Dans le bloc de fonction est exécutée si – Elle alloue de la mémoire pour une structure (lignes 44 – 47). Ensuite, la fonction retourne une adresse (aiguille) cette section de mémoire et il sera enregistré dans OurSponsors – rangée 26.

En ligne 27 appeler le, ce qui permettra de réaliser une structure de données. Sa définition est dans les lignes 63 – 73. Après la saisie des données, variable sponsorAmount incrémentée. L'utilisateur est invité à faire un choix – continuer à entrer ou sortir du. Si vous continuez – de plus, la fonction est appelée AddStruct().




Il faut se rappeler, le pointeur OurSponsors se réfère déjà à l'emplacement de mémoire avec des données enregistrées. Donc, ne pas simplement obtenir la mémoire perevydelit. Tout d'abord, vous devez prendre soin de sauvegarder les données. Regardez le bloc autre lignes 48 – 59. En ligne 50 créer un pointeur temporaire. En vertu de cette allouer de la mémoire pour montant + 1 structures (à savoir. plus d'une structure, ce qui a eu la fonction). Ensuite, copier les données de l'objet reçu. structures de tableaux Dernière objet tempObj ostanetsâ nezapolnennym. Lorsque les données sont copiées, libère la mémoire Obj – rangée 57 et écrire dans le nouveau pointeur d'adresse. Il pointera vers la mémoire, dans lequel sont stockées des données et la zone supplémentaire de mémoire allouée pour le remplissage de nouvelles données.

Encore une fois, la fonction est appelée setData(), ce qui permettra de rendre les données dans une nouvelle section dédiée du stockage – le dernier élément d'un ensemble de structures.

Lorsqu'un utilisateur décide d'entrer plus de données – il appuie sur zéro. Après cela, la fonction de travail showData() et l'écran affiche un tableau avec les données de toutes les structures de tableau dynamique. A la fin du programme ne pas oublier de libérer de la mémoire, qui prend un tableau dynamique des structures.

résultat – contribution:

c ++ tableau dynamique des structures

table:

c ++ tableau dynamique des structures

Pour soutenir notre site – cliquez sur la tirelire et choisir un moyen pratique.

Bulletin de nouvelles leçons sur la programmation:

date
page
Le tableau dynamique des structures C ++
évaluation
51étoile1étoile1étoile1étoile1étoile

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>