Vous êtes sur la page 1sur 10

Structuri de date - Culegere de probleme n C++

Obiecte

9. Obiecte
Problema 9.1 S
L R SURFHGXU

VHGHILQHDVF

XQRELHFWFHFRQ LQHRGDW

GHWLSDUWLFRO

 $UWLFROXO FRQ LQH OD UkQGXO OXL XQ YHFWRU GH  HOHPHQWH

GH WLS vQWUHJ 6

 VH DILH]H HOHPHQWHOH YHFWRUXOXL IRORVLQG XQ SRLQWHU OD

DUWLFROLXQSRLQWHUODRELHFW6

VHDSHOH]HSURFHGXUDGHILQLW

obiectului.

Rezolvare:
#include<stdio.h>
#include<conio.h>
typedef int a[10];
struct b { a c; };
class d { public:
struct b e;
void beta();
};
typedef b *pb;
typedef d *pd;
void d:: beta()
{ printf("\n aaa "); } ;
a x;
pb pp;
pd ppp;
void main()
{ clrscr();
for (int i=0;i<10; i++)
x[i]=(i+1)*(i+1)*(i+1);
pp=(b*)x;
ppp=(d*)x;
for(i=0;i<10;i++)
printf("\n%5d %5d %5d",x[i],(*pp).c[i],(*ppp).e.c[i]);
(*ppp).beta();
getch();
}

vQFDGUXO

Structuri de date - Culegere de probleme n C++

Problema 9.2

Care este diferen

MRV"&HUH]XOWDWHDILHD]

D  vQWUH FHOH GRX

ILHFDUHGLQWUHHOH"

Programul 1:

#include<stdio.h>
#include<conio.h>
class a { public:
int x;
int y;
int suma (int u,int v);
};
class b { public:
a w;
int z;
int difer(a s,int t);
};
int a::suma(int u,int v)
{ return u+v; };
int b::difer(a s,int t)
{ return (w.suma(s.x,s.y)-t*t); };
a gg;
b jj;
int aa,bb;
void main()
{ clrscr();
gg.x=100; gg.y=222;
jj.w.x=11; jj.w.y=33; jj.z=20;
aa=gg.suma(gg.x,gg.y);
bb=jj.difer(gg,jj.z);
printf("\n aa=%d",aa);
printf("\n bb=%d",bb);
getch();
}

Obiecte

 SURJUDPH GH PDL

Structuri de date - Culegere de probleme n C++

Programul 2:
#include<stdio.h>
#include<conio.h>
class a { public:
int x;
int y;
int suma (int u,int v);
};
class b { public:
a w;
int z;
int difer(a s,int t);
};
int a::suma(int u,int v)
{ return u+v; };
int b::difer(a s,int t)
{ return (w.suma(s.x,s.y)-t*t); };
a gg;
b jj;
int aa,bb;
void main()
{ clrscr();
gg.x=100; gg.y=222;
jj.w.x=11; jj.w.y=33; jj.z=20;
aa=gg.suma(gg.x,gg.y);
bb=jj.difer(jj.w,jj.z);
printf("\n aa=%d",aa);
printf("\n bb=%d",bb);
getch();
}

Problema 9.3 Indica

#include<stdio.h>
#include<conio.h>
typedef int a[10];

LFHDILHD]

SURJUDPXO

Obiecte

Structuri de date - Culegere de probleme n C++

struct b
{ a c;};
class f { public:
a p;
void alfa();
};
void f:: alfa()
{ printf(" progr. orientata pe obiecte "); };
a x,*y;
b m,n;
f v,w;
void main()
{ clrscr();
for (int i=0;i<10; i++)
{ x[i]=(i+1)*(i+1);
m.c[i]=(i+1)*(i+1);
v.p[i]=(i+1)*(i+1);
};
y=&x;
for(i=0;i<10;i++)
printf("y[%d]=%4d\n",i,(*y)[i]);
printf("\n");
n=m; w=v;
for(i=0;i<10;i++)
printf("n.c[%d]=%4d w.p[%d]=%4d\n",i,n.c[i],i,w.p[i]);
w.alfa();
getch();
}
Rezolvare:
n urma execu LHLVHYDDILD
Y[0] = 1
Y[1] = 4
Y[2] = 9
Y[3] = 16
Y[4] = 25

Obiecte

Structuri de date - Culegere de probleme n C++

Obiecte

Y[5] = 36
Y[6] = 49
Y[7] = 64
Y[8] = 81
Y[9] = 100
n.c[0] = 1
n.c[1] = 4
n.c[2] = 9
n.c[3] = 16
n.c[4] = 25
n.c[5] = 36
n.c[6] = 49
n.c[7] = 64
n.c[8] = 81
n.c[9] = 100

w.p[0] = 1
w.p[1] = 4
w.p[0] = 9
w.p[0] = 16
w.p[0] = 25
w.p[0] = 36
w.p[0] = 49
w.p[0] = 64
w.p[0] = 81
w.p[0] = 100

progr. orientata pe obiecte


Problema 9.4 6

 VH GHILQHDVF

PHGLLORUVWXGHQ LORUGLQWU

 XQ YHFWRU GH RELHFWH SHQWUX FDOFXODUHD

-o gruS

Rezolvare:
#include<stdio.h>
#include<conio.h>
typedef int vec[5];

struct student
{ char nume[20];
int varsta;
vec note;
float med;
};
class studobj { public:
struct student datt;
float medie(vec xx);



Structuri de date - Culegere de probleme n C++

void scrie(struct student yyy); };


float studobj:: medie(vec xx)
{ float xm=0;
for(int i=0;i<5;i++)
xm+=xx[i];
xm/=5;
return xm;
};
void studobj::scrie( struct student yyy)
{ printf("\n %s media:%5.2lf ",yyy.nume,yyy.med); };
studobj stt[10];
int nn;
float xx,med;
void main()
{ clrscr();
printf("\nnumar studenti [1..10]: ");
scanf("%d",&nn);
for (int ii=0;ii<nn; ii++)
{ printf("nume:");
fflush(stdin); gets(stt[ii].datt.nume);
printf("varsta:");
scanf("%d",stt[ii].datt.varsta);
for(int jj=0;jj<5;jj++)
{ printf("nota - %d :",jj+1);
fflush(stdin); scanf("%d",&stt[ii].datt.note[jj]);
}
stt[ii].datt.med=stt[ii].medie(stt[ii].datt.note);
};
for(ii=0;ii<nn;ii++)
stt[ii].scrie(stt[ii].datt);
getch();
}

Obiecte

Structuri de date - Culegere de probleme n C++

Problema 9.5 Defini

L XQ RELHFW QXPLW PXQFLWRU DYkQG R VWUXFWXU

GHVFULH QXPHOH VDODULXO RUDU QXP


YDULDELO

Obiecte
 FH

UXO GH RUH L UH LQHULOH  DYkQG R

GHWLSvQWUHJSHQWUXGHVFULHUHDVDODULXOXLLGRX

SURFHGXULLR

IXQF LH SHQWUX FLWLUH GDWH VFULHUH UH]XOWDW L FDOFXO VDODULX  6FULH L

programul care ntr-RVWUXFWXU

UHSHWLWLY

DSHOHD]

LIXQF LDSHQWUXFDOFXOXOVDODULXOXLSHQWUXXQQXP

FHOHGRX

SURFHGXUL

UGHPXQFLWRUL

Rezolvare:
#include<stdio.h>
#include<conio.h>
struct pers
{ char nume[20];
int nrore;
int salorar;
int retineri;
};
class muncitor { public:
struct pers persoana;
int salariu;
void citeste(pers &ppersoana);
int calcul(pers wpersoana);
void scrie(pers tpersoana,int tsalariu);
};
typedef muncitor *pmuncitor;
void muncitor::citeste(pers &ppersoana)
{ printf("\nnume:"); fflush(stdin); gets(ppersoana.nume);
printf("nr. ore lucrate:"); scanf("%d",&ppersoana.nrore);
printf("salariu orar:"); scanf("%d",&ppersoana.salorar);
printf("retineri:"); scanf("%d",&ppersoana.retineri);
};
int muncitor::calcul(pers wpersoana)
{ return (wpersoana.nrore*wpersoana.salorar-wpersoana.retineri); };
void muncitor::scrie(pers tpersoana,int tsalariu)
{ printf("\n%s salariu: %d\n",tpersoana.nume,tsalariu); };
int nr,sal;
pmuncitor pmuncit;

Structuri de date - Culegere de probleme n C++

Obiecte

void main()
{ clrscr();
printf("\nnumar de muncitori: ");
scanf("%d",&nr);
pmuncit=new muncitor;
for (int i=0;i<nr; i++)
{ pmuncit->citeste(pmuncit->persoana);
sal=pmuncit->calcul(pmuncit->persoana);
pmuncit->scrie(pmuncit->persoana,sal);
};
delete pmuncit;
getch();
}
Problema 9.6
D

 'HILQL LRELHFWXO VWRF PDWHULDOL FDOFXOD L YDORDUHD WRWDO 

PDWHULDOHORU

PLFDUH

FRQ LQXWH

LQL LDOL]DWHGHODWHUPLQDO

Rezolvare:
#include<stdio.h>
#include<conio.h>
struct mat
{ int cod;
int cant;
int pret;
int intr;
int ies;
};
class stocmat { public:
struct mat aaa;
int valstoc(int c1,int p1);
};
int stocmat:: valstoc(int c1,int p1)
{ return (c1*p1); };
stocmat vec[100];
int a,n;
int valtot=0;
void main()

GH

XQ

YHFWRU

GH

RELHFWH

Structuri de date - Culegere de probleme n C++

Obiecte

{ clrscr();
printf("\ndati numarul de materiale: ");
scanf("%d",&n);
for (int i=0;i<n; i++)
{ printf("\ndati cod material: "); scanf("%d",&vec[i].aaa.cod);
printf("dati cantitatea:"); scanf("%d",&vec[i].aaa.cant);
printf("dati pretul: "); scanf("%d",&vec[i].aaa.pret);
printf("dati intrarile:"); scanf("%d",&vec[i].aaa.intr);
printf("dati iesirile: "); scanf("%d",&vec[i].aaa.ies);
if ((vec[i].aaa.intr==0)&&(vec[i].aaa.ies==0))
{ a=vec[i].valstoc(vec[i].aaa.cant,vec[i].aaa.pret);
valtot+=a;
}
};
printf("valoare totala a materialelor fara miscare este: %d",valtot);
getch();
}
Problema 9.7 Defini LLLQL LDOL]D LRPDWULFH5HIHUL LDFHDVW VWUXFWXU 
printr-un pointer membru al unui obiect, ntr-R IXQF LH PHPEUX DO
DFHOXLDLRELHFW

Rezolvare:
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
typedef int mat[100][100];
typedef mat *pmat;
class nod { public:
pmat c;
void init(int n,int m);
void list(int n,int m);
int suma(int n,int m);
};
void nod::init(int n,int m)
{ printf("\ndati elementele matricei: \n");
c=new mat[1];

Structuri de date - Culegere de probleme n C++

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",c[i][j]);
};
void nod::list(int n,int m)
{ printf("\nelementele matricei sunt: ");
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
printf("\n x(%d,%d)=%d ",i,j,*c[i][j]);
};
int nod::suma(int n,int m)
{ int s=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
s+=*c[i][j];
return s;
};
nod p;
int n,m;
void main()
{ clrscr(); fflush(stdin);
printf("dati nr. maxim de linii N[1..10]: "); scanf("%d",&n);
printf("dati nr. maxim de coloane M[1..10]: "); scanf("%d",&m);
p.init(n,m);
printf("am initializat matricea ");
p.list(n,m);
printf("\nsuma elementelor matricei este: %d ",p.suma(n,m));
getch();
}

Obiecte

Vous aimerez peut-être aussi