Structurile sunt un tip de date neomogene – permit pastrarea intr-o variabila de
acest tip a unor date de tipuri diferite. EX: informatii cu privire la o anumita entitate/ un anumit obiect – elev, student, agnajatul dintr-o firma; Elev: nume, prenume, note, medii, adresa, numar matricol – au tipuri de date diferite. Structurile se mai numesc si inregistrari. Tipul de date in c/c++ pentru structuri se numeste struct. Informatiile cuprinse intr-un tip structura se numesc campuri ale structurii. Sintaxa: Struct <nume_struct>{ <tip1> <lista_campuri1>; <tip2> <lista_campuri2>; ..... <tipn> <lista_campurin>; }; Explicatii: <nume_struct> = denumirea structurii. <lista_campuri> = liste de campuri ce pot contine unul sau mai multe campuri separate prin virgule. <tip> = tipurile de date pentru fiecare lista de campuri Exemplu: Struct elev{ Char nume[20], pren[20]; Int nota1, nota2, nota3; Float medie; }; Declarare: Struct elev{ Char nume[20], pren[20]; Int nota1, nota2, nota3; Float medie; } e1,e2; Sau Elev x,y,z; EX: se defineste structura ca un tip de date anonim (nu are nume) struct { Char nume[20], pren[20]; Int nota1, nota2, nota3; Float medie; } e1,e2; Accesul la campurile unei structuri Sintaxa: <variabila structura>.<nume camp> Pentru a accesa un camp dintr-o variabila de tip structura se foloseste notatia cu punct. EX: E1.nume E1.pren E1.nota1 Etc. Citire/afiare Nu este permisa citirea/afisarea pentru variabi;e de tip struct – se pot citi/afisa doar campurile incluse intr-o variabila de tip struct. Citirea /afisare unei structuri se face camp cu camp pentru fiecare camp in parte. EX: Struct elev{ Char nume[20], pren[20]; Int nota1, nota2, nota3; Float medie; } e; Cin.getline(e.nume,20); Cin.getline(e.pren, 20); Cin>>e.nota1>>e.nota2>>e.nota3; e.medie = (e.nota1+e.nota2+e.nota3)/2; Cout<<e.nume<<” „ e.pren<<endl; Cout<<e.nota1<<” „<<e.nota2<<” „<<e.nota3; Cout<<e.medie;
Operatii/prelucrari permise asupra campurilor dintr-o structura
Fiecare camp dintr-o structura are un tip de date, se comporta ca o variabila de tipul de date respectib asupra campului sunt permise operatii pe care le putem face cu variabila de tipul de fate respectiv. Ex: S=e.nota1+e.nota2; If(e.medie>=9.5).... Strcat(e.nume, e.pren); Atribuirea pentru structuri Este permisa operatia de atribuire intre 2 variabile de tip structura, daca avem acelasi tip de date struct. Struct elev{ Char nume[20], pren[20]; Int nota1, nota2, nota3; Float medie; } e1, e2; ... E1=e2 // fiecare camp din e1 va primi aceeasi valoare cu campul corespunzator din e2. Atriuirea este identica cu urmatorul set de operatii. Structuri imbricate Daca un camp dintro structura este la randul sau o structura de alt tip, atunci spunem ca avem structuri imbricate – o structura este inclusa in alta structura. Struct data {int zi, luna, an}; Struct elev{ Char nume[30]; Data data_nasterii; Floar medie; }x; x.nume x.data_nasterii -> x.data_nasterii.zi; x.medie
Tablouri unidimensionale cu tipuri de baza structura