struct pantof { int marime; float pret; } p[100];p[2].pretDoar la matematică-informatică. Cum definești un struct, cum accesezi un câmp, tablouri în înregistrări și înregistrări în tablouri. Citirea expresiei din afară spre înăuntru și cum punctează baremul II.3.

ții minte doar fișa asta și ești acoperit
Doar la matematică-informatică. La științele naturii datele stau în variabile separate.
Definirea: struct eticheta { tip camp; ... } variabila;
Accesul: variabila.camp. Eticheta nu apare niciodată într-o expresie de acces.
Truc: Pornești de la variabilă și mergi spre câmpul dorit.
Indicele stă lângă numele care e tablou: p[2].pret, dar p.informatii[0].
II.3 (definire) = 6 p: de obicei definire 4 p (bază, etichetă, câmpuri), declarare 1 p, corectitudine globală 1 p.
Culorile din lecție:termenidee-cheie
struct) adună sub un nume câmpuri de tipuri diferite.La o sală de spectacole ții minte numărul de locuri și prețul biletului. Sunt două valori despre același lucru. Ai vrea să le ții împreună și să le dai un singur nume. Asta face înregistrarea.
struct sala
{ int nrLocuri;
int pret;
} s;
Oficial: sala e eticheta (numele tipului), nrLocuri și pret sunt câmpurile, s e variabila. La câmpuri ajungi cu punct: s.pret.
În C++ poți declara și separat, cu sala s;. În C scrii struct sala s;.
În Pascal, type pantof=record marime:integer; pret:real end; și var p:array[0..99] of pantof;, ca în varianta Pascal a modelului 2027. Accesul e tot p[2].pret.
struct pantof { int marime; float pret; } p[100];p[2].pretstruct prajitura { int cod; float pret; int informatii[3]; } p;p.informatii[0]b.metal.pretpret din câmpul metal| Formă | Declarare | Acces | Înseamnă |
|---|---|---|---|
| Tablou de înregistrări | struct pantof { int marime; float pret; } p[100]; | p[2].pret | prețul perechii de pe poziția 2 |
| Câmp care e tablou | struct prajitura { int cod; float pret; int informatii[3]; } p; | p.informatii[0] | primul element din tablou |
| Înregistrare în înregistrare | vezi mai jos | b.metal.pret | câmpul pret din câmpul metal |
Cum accesezi prețul celei de a treia perechi, dacă p e tablou de 100 de struct pantof?
Toate cer același lucru: alege expresia cu acces corect.
p[100] de struct pantofp[2].pretstruct progresie { int prim; int ratie; } p;p.prim+9*p.ratiex[20] de struct ciocolatax[10].tipstruct magazin cu tablourile valoare, exemplarem.valoare[0]*m.exemplare[0]s cu câmpul doi, cu min și secs.doi.sec+60*s.doi.minm cu câmpul expira de tip datam.expira.an==2025 && m.expira.luna>10| Lucrare | Declarare | Se cere | Răspuns din barem |
|---|---|---|---|
| Model 2027, I.2 | p[100] de struct pantof | prețul perechii a treia | D: p[2].pret |
| Iunie 2026 var. 3, I.3 | struct progresie { int prim; int ratie; } p; | al 10-lea termen | b: p.prim+9*p.ratie |
| Iulie 2024 var. 3, I.4 | x[20] de struct ciocolata | tipul sortimentului 11 | d: x[10].tip |
| August 2026 var. 1, I.3 | struct magazin cu tablourile valoare, exemplare | suma de la primul tip | c: m.valoare[0]*m.exemplare[0] |
| Rezervă 2026 var. 5, I.3 | s cu câmpul doi, cu min și sec | durata în secunde | a: s.doi.sec+60*s.doi.min |
| Rezervă 2025 var. 7, I.2 | m cu câmpul expira de tip data | expiră în 2025, după octombrie | c: m.expira.an==2025 && m.expira.luna>10 |
Variantele greșite se repetă: pret[2].p, p.pret[2], m.data.an, x.ciocolata[10].tip. Fie folosesc eticheta, fie pun indicele lângă alt nume.
Suma de bani din bancnotele de primul tip, în struct magazin cu tablourile valoare și exemplare?
Durata părții a doua, în secunde, în s.doi.min și s.doi.sec?
Enunțul îți dă expresiile și cere definiția. Mergi invers: din fiecare expresie deduci câmpul.
Iunie 2025, varianta 1, II.3 (6 p). Pentru o prăjitură: cod (natural de două cifre), preț (real) și trei informații naturale. Expresiile sunt p.cod, p.pret, p.informatii[0]. Eticheta cerută: prajitura.
struct prajitura
{ int cod;
float pret;
int informatii[3];
} p;
Barem: definire 4 p (câte 1 p: definire de bază, etichetă, câmpuri de tip simplu cod, pret, câmp de tip structurat informatii), declarare 1 p, corectitudine globală 1 p.
Sesiunea specială 2026, varianta 4, II.3 (6 p). Variabila s memorează numărul de stele (din [10,200]) și, pentru fiecare, magnitudinea (reală) și distanța (naturală). Expresiile sunt s.numar, s.stea[0].magnitudine, s.stea[0].distanta. Eticheta cerută: observator.
Din s.stea[0].magnitudine deduci că stea e un tablou de înregistrări, cu cel mult 200 de elemente.
struct detalii
{ float magnitudine;
int distanta;
};
struct observator
{ int numar;
detalii stea[200];
} s;
August 2025, varianta 4, II.3 (6 p). Bijuteria are greutate, iar metalul are denumire (șir de cel mult 30 de caractere) și preț. Expresiile sunt b.metal.denumire și b.greutate*b.metal.pret. Eticheta cerută: bijuterie.
struct bijuterie
{ int greutate;
struct
{ char denumire[31];
int pret;
} metal;
} b;
Barem la ultimele două: definire 4 p (definire de bază, etichetă, câmp simplu, câmp structurat), declarare 1 p, corectitudine globală 1 p. Baremul spune explicit că tipul câmpului structurat poate fi definit înainte, ca la detalii, sau în interior, ca aici.
Sesiunea specială 2025, varianta 6, II.3 (6 p). Variabila d are câmpurile A și B de tip punct, cu x și y: colțul stânga-sus și colțul dreapta-jos ale unui dreptunghi cu laturile paralele cu axele. Se afișează DA dacă e pătrat, altfel NU.
Pe x latura este d.B.x-d.A.x. Pe y, pentru că A e sus, latura este d.A.y-d.B.y.
if(d.B.x-d.A.x==d.A.y-d.B.y) cout<<"DA";
else cout<<"NU";
Barem: acces la câmpurile de pe primul nivel 2 p, acces la câmpurile de pe al doilea nivel 2 p, corespondență mesaje-proprietate 1 p, corectitudine globală 1 p.
struct în 7 din 15 lucrări MI numărate, 2024–2027: definire de structură sau secvență cu câmpuri.s.stea[0].distanta, b.metal.pret.prajitura.cod în loc de p.cod.s[0].stea.distanta în loc de s.stea[0].distanta.char denumire[30] pentru 30 de caractere: lipsește locul pentru caracterul nul.; după definiția structurii.