Array de structuri - de la începători

Structura în C ++ sunt undeva o unitate care conține un set întreg de diferite definite de utilizator.
Structura - un tip de date compozit, construit folosind o varietate de tipuri.

Este posibil într-un fel de a încerca să definească, dar cu greu oricare dintre definițiile arată în mod clar și va ajuta să înțeleagă începător.

Structurile sunt foarte asemănătoare cu matrice.
Dacă tablourile prin definiție pot conține în ea însăși o multitudine de elemente similare.
În interiorul structurilor pot fi descrise printr-un număr diferit de elemente diverse. Iar structura în sine este un tip de date personalizat.

// În acest caz, fiecare dintre aceste zece elemente constă din două elemente definite în interiorul structurii

===========================
In interiorul structurii descrise două tipuri diferite de variabile definite (int și char). Variabilele din cadrul structurii poate fi un număr diferit și fiecare element poate corespunde tipului dorit.
Vazhno- Întreaga structură de interes nu în structura din titlu și în numele obiectului. Ie După ce descrie structura necesară pentru a crea cel puțin o variabilă este tipul de structură care are un nume.
În acest exemplu, o astfel de variabilă - obj1. Aceste variabile sunt numite obiecte. Se pare că există o variabilă de tip MyStruct obj1. În acest caz, în codul obj1 variabila de mai sus este declarată ca o matrice variabilă de zece elemente. Fiecare dintre cele zece elemente are tip MyStruct și, prin urmare, fiecare element al șirului este format din acele elemente, care sunt descrise în cadrul structurii.
Poate cineva ar ajuta, și cineva se gândește la un verbiaj confuz și verbose. Nu contează.
MyStruct obj1 [10]; // Array de zece structuri. Sau pur și simplu o serie de structuri.
Deoarece structura din interiorul descrise două variabile vor fi utilizate pe cele două valori pentru fiecare element al structurilor de matrice (a se vedea astazi)


Având în vedere codul de mai sus, și cercetând în sensul structurilor necesare pentru a înțelege că acum când schimbați elemente sau pentru tragerea elementelor structurii pentru fiecare element din matrice trebuie să fie manipulate de către fiecare dintre elementele structurii.

===========================

MyStruct obj1 [10]; // Elemente Zece tip MyStruct

// În acest caz, fiecare dintre aceste zece elemente constă din două elemente definite în interiorul structurii

Uneori se știe cât de multe elemente ar trebui să conțină o serie de cuvinte și poate fi văzut pe problema de programare: „Creați o serie de structuri N“ etc. În probleme simple nu este nimic complicat. Deseori, elevii sunt oferite pentru a introduce un N de la tastatură la introducerea acestei N crea o serie de structuri de elemente N.

==================
MyStruct * obj1; // obj1 este un pointer la MyStruct;
int N; // N este numărul de elemente de matrice

cin >> N; // Aloca o valoare N

obj1 = new MyStruct [N]; // Alocarea dinamică a memoriei pentru structurile matrice de N elemente
// Unele cod
șterge [] obj1; // Eliberarea
==================

Atunci când se utilizează o structură de matrice compusă dintr-o multitudine de elemente, pentru a fi utilizate ca un cicluri comune matrice. Cred că are sens să împartă date de intrare și de ieșire a datelor în funcțiile individuale. In structura simpla de mai sus se creează următorul exemplu, care este un magazin alimentar tip de date.

magazin alimentar este un singur întreg. Magazinul poate vinde produse diferite. Fiecare produs are un nume, are un preț. În magazin există diferite vânzătorii care vând bunuri. Fiecare vânzător este cumpărător adecvat care cumpără mărfurile. Acesta poate fi lung și greu să picteze ceea ce se întâmplă în realitate. dar mă voi concentra pe faptul că el a scris.
Pentru a explica compilatorul de care avem nevoie, este necesar să se aducă o anumită ordine în cele de mai sus.
Voi rupe codul pe expunerea treptată la majoritatea cititorilor au încercat din greu să înțeleagă esența.

Tot ceea ce este în magazin pot fi grupate sub numele datelor dorite.
==================
struct Shop

char nume [20]; // Nume produs
plutească cena; // Prețul produsului
char prodav [30]; // Vanzator
char pokup [30]; // cumpărător
int Date [3]; // Data vânzării
>;

==================
Data punerii în vânzare descris ca o serie de trei numere întregi. Celelalte variabile corespunzătoare diferitelor tipuri, potrivite pentru variabile de prelucrare

Odată identificate și descrise structura necesară necesară pentru a crea o variabilă care are tipul de structură nume. Elemente de date introduse ale structurii. Codul de mai jos este tot ceea ce este scris chiar de mai sus.

=================
#include
/ * Descrieți structura * /
struct Shop
char nume [20];
cena int;
char prodav [30];
char pokup [30];
data int [3];
>;

/ * Funcția principală * /
int main ()
<
int N;
cout <<“Введи N: “ ;
cin >> N;
Shop * M1 = new Shop [10]; // Aloca structura matrice de 10 elemente

delete [] M1; // Eliberarea
cin. get (); // Așteptați apăsați tasta
return 0;
>
=================
În sine nu are nici un astfel de cod este prea mult sens, este doar o parte a pregătirilor pentru a lucra cu o serie de structuri.

Apoi, trebuie să ofere informații elementele de o serie de structuri. de intrare și de ieșire de date este convenabil de a furniza prin intermediul funcțiilor individuale ca de multe ori a creat meniuri personalizate cu o gamă de structuri de prelucrare. Structura este foarte similar cu matrice si se transmite in interiorul functiei în același mod. Puteți utiliza un pointer și trebuie să se facă astfel încât funcția cunoaște dimensiunea unei matrice de structuri. Mărimea structurilor matrice funcționează trebuie să știți pentru a face o serie de structuri de cicluri de prelucrare a cunoaște punctul final al execuției sale.

// Primul parametru - pointer la Shop

// Al doilea parametru - dimensiunea de matrice

Mai jos este un cod complet, care conține trei funcții. Funcția principală și două funcții care se ocupă de date. Deoarece datele care urmează să fie prelucrate servește o serie de structuri. O funcție oferă intrare la gama de structuri. A doua funcție are o serie de structuri de pe ecran.

/ * Descrieți structura * /
struct Shop
char Nume [30];
int Cena;
char Prodav [30];
char Pokup [30];
int Date [3];
>;


/ * Funcții permite schimbul de date la ecran * /
void ShowData (Shop * M, int N)
pentru (int i = 0; i cout <cout<cout<cout<cout<>
>
/ * Datele au fost introduse în structura * /
void GetData (Shop * M, int N)
cin. ignora ();
pentru (int i = 0; i cout <<“\n” ;
cout <<“НАЗВАНИЕ: “ ; cin. getline ( M [ i ]. Name. 30 );

cout <<“ЦЕНА: “ ; cin>> M [i]. cena;
cin. ignora ();

cout <<“ПРОДАВЕЦ: “ ; cin. getline ( M [ i ]. Prodav. 30 );
cout <<“ПОКУПАТЕЛЬ: “ ; cin. getline ( M [ i ]. Pokup. 30 );

cout <<“ДАТА “;
cin >> M [i]. Data [0]; cin. ignora ();
cin >> M [i]. Data [1]; cin. ignora ();
cin >> M [i]. Data [2]; cin. ignora ();
>
>

/ * Funcția principală * /
void main ()
sistem ( "CLS");
int N; cout <<“Введите N: “ ; cin>> N;
Shop * M = new Shop [N];
GetData (M. N); // Introducerea datelor într-o serie de structuri
ShowData (M. N); // matrice de imprimare a structurilor de pe ecran
delete [] M;
sistem ( "PAUSE");
>
========================
Este demn de atenție la cin. ignora (). Dacă eliminați această bucată de cod pe fiecare parte, putem vedea nu este situație foarte plăcută. În interiorul fluxului poate rămâne newline și nu este un serviciu bun. Pentru a evita unele dintre problemele folosite cin .ignore (); Am act de faptul că această afirmație în codul de mai sus este înregistrat după introducerea fiecărui tip de date non-caracter.

Structura exemplu de ieșire de mai sus este convenabil, în unele cazuri și în altele incomode. Personal, am preferat să se uite la structura de date ca tabelul de date. Dos prea mică fereastră nu va crea un tabel de frumos, dar într-un tabel de o masă mică înființat este simplu. Puteți crea cu ușurință un indiciu de mai sus, în care să se înregistreze numele vorbitorilor, la rândul său. Și este ușor să afișați o masă mică

============================
#include
#include
/ * Descrieți structura * /
struct Shop
char Nume [30];
int Cena;
char Prodav [30];
char Pokup [30];
int Date [3];
>;


/ * Funcții permite schimbul de date la ecran * /
void ShowData (Shop * M, int N)
sistem ( "CLS");
cout <<“НАЗВАНИЕ ЦЕНА ПРОДАВЕЦ ПОКУПАТЕЛЬ ДАТА ПРОДАЖИ” <<“\n\n” ;
pentru (int i = 0; i cout < cout <<“\r33[20C” ;
cout < cout <<“\r33[30C” ;
cout < cout <<“\r33[50C” ;
cout < cout <<“\r33[70C” ;
cout <>
cout <<“\n” ;
>


/ * Datele au fost introduse în structura * /
void GetData (Shop * M, int N)

cin. ignora ();
pentru (int i = 0; i cout <<“\n” ;
cout <<“НАЗВАНИЕ: “ ; cin. getline ( M [ i ]. Name. 30 );

cout <<“ЦЕНА: “ ; cin>> M [i]. cena;
cin. ignora ();

cout <<“ПРОДАВЕЦ: “ ; cin. getline ( M [ i ]. Prodav. 30 );
cout <<“ПОКУПАТЕЛЬ: “ ; cin. getline ( M [ i ]. Pokup. 30 );

cout <<“ДАТА “ ;
cin >> M [i]. Data [0]; cin. ignora ();
cin >> M [i]. Data [1]; cin. ignora ();
cin >> M [i]. Data [2]; cin. ignora ();
>
>

articole similare