Sunteți pe pagina 1din 9

Structuri

Structura este un tip de data structural care imi permite


asocierea mai multor date care pot fi de tipuri diferite.
ex: date despre un elev:
-nume
-prenume
-medie informatica
date despre un material
-denumire
-pret
-cantitate
O structura ee defineste prin:
struct [ < nume > ]
{< tip 1 > camp 11,camp 12,...;
< tip 2 > camp 21,camp 22,...;
...
}[var 1,var 2...;]
ex:
struct elev
{char nume[20],prenume[20];
unsigned nota;
}//s-a definit tipul elev
elev a[100],x; //am declarat variabile de tipul elev
ex:
struct
{char denumire[30];
unsigned pret,cantitate;
}v[100],aux;
Structura de mai sus este anonima.In acest caz variabilele trebuie
declarate dupa inchiderea acoladei.
Accesarea informatiilor:
nume_var.nume_camp
ex: x.nume
a[i].nume

Informatiile asociate unei structuri se numesc "campuri" sau "membri".


ex:-pentru strructura elev avem cmpurile nume,prenume si nota
-pentru structura anonima avem campurile denumire,pret si cantitate

Problema:
Pentru elevii unei clase se cunosc numele,prenumele si media.Sa se afiseze numele
elevului cu cea mai mare medie.
#include

struct elev
{char nume[20],prenume[30];
float media;
}a[40],aux;
int n,i,k;
void citire(elev a[40],int &n)
{int i;
cout << "n="; cin >> n;
for(i=1;i<=n;i++) {cout << "nume" << i << ":"; cin >> a[i].nume;
cout << "prenume" << i << ":"; cin >> a[i].prenume;
cout << "medie" << i << ":"; cin >> a[i].medie;
}
}
int maxim(elev a[40],int n)
{int i,k;
float max;
max=0;
for(i=1;i<=n,i++) if(a[i].med>max) {max=a[i].med';
k=i;
}
cout << a[i].nume;
}
int main()
{citire(a,n);
maxim(a,n);
}

#include<iostream.h>
#include<math.h>
struct punct
{ double x,y;
}A,B;
void main()
{ double d;
cin>>A.x>>A.y;
cin>>B.x>>B.y;
d=sqrt((A.x-B.x)*(A.x-B.x) +(A.y-B.y)*(A.y-B.y));
cout<<d;
}

include<fstream.h>
ifstream f("clasa.in");
struct elev
{ char nume[20], prenume[20];
double media;
}C[30];
void main()
{ int i,n;
f>>n;
for(i=1;i<=n;i++)
f>>C[i].nume>>C[i].prenume>>C[i].media;
int gata;
do{ gata=1;
for(i=1;i<n;i++)
if(C[i].media<C[i+1].media)
{ elev aux=C[i];
C[i]=C[i+1];
C[i+1]=aux;
gata=0;
}
}while(!gata);
for(i=1;i<=n;i++)
cout<<C[i].nume<<" "<<C[i].prenume<<" "<<C[i].media<<endl;
}

#include<iostream>
using namespace std;
struct punct { float x,y; };
struct triunghi { punct A, B, C; };
void citirep(punct &p)
{ cin>>p.x>>p.y;
}

void citiret(triunghi &t)


{
citirep(t.A);
citirep(t.B);
citirep(t.C);
}
float dist(punct a, punct b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
float perimetru(triunghi t)
{
return dist(t.A,t.B)+dist(t.A,t.C)+dist(t.B,t.C);
}
int main()
{
triunghi t;
citiret(t);
cout<<perimetru(t);
return 0;
}

#include<fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
struct dreptunghi
{ int L, l, a, p;
};
void citire(dreptunghi &d)
{
fin>>d.L>>d.l;
d.a=d.L*d.l;
d.p=2*(d.l+d.L);
}
void afisare(dreptunghi d)
{
fout<<d.L<<" "<<d.l<<endl;
}
int main()
{
int n,i;
dreptunghi d, max, min;
fin>>n;
citire(d);
max=min=d;
for(i=2;i<=n;i++)

{
citire(d);
if(d.a>max.a) max=d;
if(d.p<min.p) min=d;
}
afisare(max);
afisare(min);
fin.close();
fout.close();
return 0;
}

#include<fstream.h>
#include<string.h>
struct elev {char nume[30];
char pren[30];
float mo;
int teza;
float media;
};
ifstream f("elev.in");
elev c[100];
void citire(elev &e)
{f>>e.nume;
f>>e.pren;
f>>e.mo;
f>>e.teza;
e.media=(e.mo*3+e.teza)/4;
}
void afisare(elev e)
{cout<<e.nume<<" "<<e.pren<<" "<<e.media;
cout<<endl;
}
void ordonare(int n,elev c[100])
{int i,gata;
elev aux;
do {gata=1;
for (i=1;i<n;i++)
if (strcmp(c[i].nume,c[i+1].nume)>0)
{aux=c[i];
c[i]=c[i+1];
c[i+1]=aux;
gata=0;
}
}while (!gata);
}
int main ()
{ int n,i;
f>>n;
for (i=1;i<=n;i++) citire(c[i]);
ordonare (n,c);
for (i=1;i<=n;i++)
if (c[i].media<4.5)
afisare(c[i]);
return 0;

Teste grila din variante STRUCTURI


Varianta 5,Subiectul II :
1.Variabila d, declarat alturat, memoreaz n cmpurile a i b
limea i, respectiv, lungimea unui dreptunghi. Care dintre
urmtoarele instruciuni atribuie cmpului aria al variabilei d
valoarea ariei dreptunghiului respectiv? (4p.)
struct dreptunghi
{
float a,b,aria;
}d;
a. d.aria==d.a*d.b; RASP :d
b. aria.d=a.d*b.d;
c. aria.d=d.a*d.b;
d. d.aria=d.a*d.b;
Varianta 52,Subiectul II:
1. Considerm declararea alturat folosit
pentru a memora numele, prenumele i cele
2 note ale unui elev.
Care dintre instruciunile de mai jos
calculeaz n variabila real m media
aritmetic a notelor elevului ale crui
informaii sunt memorate n variabila x? (4p.)
struct elev{
char nume[10],prenume[20];
float nota1,nota2;
} x;
a. m=(x.nota1+x.nota2)/2; b. m=(nota1+nota2)/2;
c. x.m=(x.nota1+x.nota2)/2; d. m=(x,nota1+x,nota2)/2; RASP : a
Varianta 51, Subiectul II:
1. Considerm declararea alturat
folosit pentru a memora numele,
prenumele i media unui elev.
Care dintre expresiile de mai jos are ca
valoare prima liter a numelui unui
elev ale crui informaii sunt memorate
n variabila p? (4p.)
struct elev{
char nume[10],prenume[20];
float medie;
}p;
a. p.nume[1]
b. p.nume[0] RASP :b
c. p.nume
d. nume[1]

Varianta 43,Subiectul II:


3. Variabila x, declarat alturat, memoreaz n cmpurile med1 i
med2 mediile semestriale ale unui elev. Scriei o expresie a crei
valoare va fi media anual a acestui elev. (6p.)
struct elev { RASP: float medan;
medan=(x.med1+x.med2)/2;
int matricol;
float med1,med2;} x;
Varianta 47,Subiectul II
4. n declararea alturat, cmpurile a i b ale nregistrrii
reprezint numrtorul, respectiv numitorul unei fracii. Care este
expresia cu care se pot nlocui punctele de suspensie n secvena
de mai jos astfel nct dac fracia memorat n variabila f se
simplific prin numrul natural nenul k se afieaz mesajul DA?
if ( ) cout < < DA;
(6p.)
RASP : (a%k==0) && (b%k==0)
struct rap { int a, b; } f;
int k;
Varianta 37,Subiectul II:
1. Fie declarrile alturate. Dac variabila x reine informaii despre un elev, precizai care
este varianta corect ce afieaz prima liter din numele acestuia? (4p.)
struct elev{ char nume[30]; float nota;}; elev x;
a. cout < < nume;
b. cout < < x;
c. cout < < x.nume;
d. cout < < x.nume[0]; RASP : d
Varianta 62 ,Subiectul II:
2.Considernd declarrile alturate, care dintre urmtoarele referiri este corect din punct
de vedere sintactic ? (4p.)
struct complex {float re,im;};
complex x,y;
a. complex.re
b. x.re RASP: b
c. complex.x
d. re.x
Varianta 64,Subiectul II:
1. Considernd declarrile alturate, care dintre urmtoarele referiri este corect din punct
de vedere sintactic ? (4p.)
struct datan{int zi,ln,an;};
struct elev {char nume[30]; datan dn,da;} e;
a. e.datan.ln
b. nume.e
c. e.dn.an[2]
d. e.dn.zi RASP: d
Varianta 65,Subeictul II:

1. Considernd declarrile alturate, care dintre urmtoarele referiri este corect din punct
de vedere sintactic ? (4p.)
struct punct{float x,y;};
struct cerc {float raza; punct centru;} c;
a. c.punct.y
b. c.raza.punct
c. c.centru.x Rasp :c
d. c.y.centru
Varianta 66,Subiectul II:
1. Cum se poate accesa prima liter a denumirii unui produs ale crui caracteristici sunt
memorate n variabila p, declarat alturat? (4p.)
struct produs{ char denumire[15]; int pret;}p;
a. produs.denumire[0]
b. denumire.p[0]
c. p.denumire[0] Rasp :c
d. p- > denumire[0]
Varianta 67,Subiectul II:
1. Cum se poate accesa prima liter a numelui unei
persoane ale crei date de identificare sunt
memorate n variabila p, declarat alturat? (4p.)
struct persoana{
char nume[20],prenume[20];
int varsta;} p;
a. p.nume[0] Rasp:a
b. persoana.nume[0]
c. p- > nume[0]
d. nume.p[0]
Varianta 68,Subiectul II:
1. Cum se poate accesa prima liter a denumirii unui material ale
crui caracteristici sunt memorate n variabila m, declarat
alturat? (4p.)
struct material{
char denumire[20];
int pret;} m;
a. denumire.m[0]
b. m- > denumire[0]
c. material.denumire[0]
d. m.denumire[0] Rasp :d
Varianta 69,Subiectul II:
1. Cum se poate accesa prima liter a numelui unui
elev ale crui date de identificare sunt memorate
n variabila e, declarat alturat? (4p.)
struct elev{
char nume[20],prenume[20];

int varsta;}e;
a. e- > nume[0]
b. e.nume[0] Rasp:b
c. elev.nume[0]
d. nume.e[0]
Varianta 70,Subiectul II :
1. tiind c fiecare dintre variabilele var1, var2 memoreaz numele
i nota cte unui elev n forma dat de declararea alturat,
indicai care dintre urmtoarele instruciuni determin, n urma
executrii, memorarea n variabila real m a mediei aritmetice a
notelor celor doi elevi. (4p.)
struct elev
{ char nume[30];
float nota;
}var1,var2;
a. m=(var1.nota+var2.nota)/2; Rasp :a
b. m=var1.nota+var2.nota/2;
c. m=(var1+var2).nota/2;
d. m=nota(var1+var2)/2;
Varianta 71,Subiectul II:
4. Fiecare dintre variabilele declarate alturat memoreaz numele
i nota cte unui elev.
Scriei secvena de instruciuni prin care se citesc de la
tastatur numele i nota pentru fiecare dintre variabilele e1 i
e2 i apoi se afieaz numele elevului cu nota cea mai mare.
Dac cele dou note sunt egale, se va afia numele elevului
memorat n variabila e1. (6p.)
struct elev{
char nume[20];
float nota;
};
elev e1,e2;
Rasp:
cout < < numele primului elev ; cin > > e1.nume;
cout < < nota primului elev ; cin > > e1.nota;
cout < < numele celui de al 2-lea elev ; cin > > e.2 .nume;
cout < < nota celui de al 2-lea elev ; cin > > e1.nota;
if(e1.nota>=e2.nota) cout < < e1.nume;
else cout < < e2.nume ;

S-ar putea să vă placă și