Sunteți pe pagina 1din 4

Programare orientata pe obiecte limbajele C++/Java

Laborator 1

Recapitulare elemente de programare ale limbajului C++

Structuri de date
1. Pentru o grupa de studenti, secretara facultatii are nevoie de numele,
prenumele si data nasterii fiecarui student. Sa se ordoneze studentii alfabetic,
dupa nume, iar pentru studentii cu acelasi nume dupa prenume.
#include<iostream.h>
#include<string.h>
struct student
{
char nume[10], prenume[20];
struct
{
int luna,zi,an;
}data_n;
} a[30],p;
int n,i,j;
int main()
{
cout<<"numarul de studenti";cin>>n;
for(i=1;i<=n;i++)
{
cout<<"studentul "<<i<<": "<<endl;
cout<<"Nume:";
cin>>a[i].nume;
cout<<"Prenume:";
cin>>a[i].prenume;
cout<<"luna:";
cin>>a[i].data_n.luna;
cout<<"ziua:";
cin>>a[i].data_n.zi;
cout<<"anul";
cin>>a[i].data_n.an;
}
//ordonarea elementelor printr-o metoda de sortare sortare prin interschimbare
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(strcmp(a[i].nume,a[j].nume)>0)
{
p=a[i];
a[i]=a[j];
a[j]=p;
}
else
if(strcmp(a[i].nume,a[j].nume)==0&&strcmp(a[i].prenume,a[j].prenume)>0)
1

Programare orientata pe obiecte limbajele C++/Java


Laborator 1
{
p=a[i];
a[i]=a[j];
a[j]=p;
}
cout<<"Studentii ordonati:"<<endl;
for(i=1;i<=n;i++)
cout<<a[i].nume<<" "<<a[i].prenume<<endl;
}

2. Se considera o lista cu studentii care au sustinut examenul de programare.


Pentru fiecare student se cunosc: numele, prenumele, nota obtinuta. Se cere
sa se ordoneze studentii descrescator dupa nota obtinuta si sa se afiseze
studentii promovati. Sa se calculeze media aritmetica a notelor obtinute.
#include<iostream.h>
struct student
{
char nume[10], prenume[20];
int nota;
} a[200], c;
int n, i, j, S;
int main()
{
cout<<"nr. de studenti:"<<endl;
cin>>n;
cout<<"Datele despre studenti:"<<endl;
for(i=1;i<=n;i++)
{
cout<<"Studentul "<<i<<": "<<endl;
cout<<"Nume:";
cin>>a[i].nume;
cout<<"prenume:";
cin>>a[i].prenume;
cout<<"Nota:";
cin>>a[i].nota;
S+=a[i].nota;
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].nota<a[j].nota)
{
c=a[i];
a[i]=a[j];
a[j]=c;
}
cout<<"afisarea studentilor promovati:"<<endl;
for(i=1;i<=n&&a[i].nota>=5;i++)
cout<<a[i].nume<<" "<<a[i].prenume<<" "<<a[i].nota<<" "<<endl;
cout<<"media notelor="<<S*1.0/n<<endl;
}

Programare orientata pe obiecte limbajele C++/Java


Laborator 1

3. Sa se descompuna un numar in factori primi memorand rezultatul sub forma


unui vector de structuri. Fiecare element va cuprinde doua campuri: unul
care contine factorul prim si unul care contine puterea la care apare acesta in
descompunere.
#include<iostream.h>
struct factor
{
long f;
int p;
}x[20];
long m;
int n,i;
int main()
{
cout<<"Introduceti numarul:";
cin>>m;
long a=2;
while(m!=1)
{
int q=0; //puterea la care apare a in descompunerea numarului m
while(m%a==0)
{m=m/a;
q++;}
if(q)
{
n++;
x[n].f=a;
x[n].p=q;
}
if(a==2)a=3;
else a+=2;
}
cout<<"Descompunerea in factori primi:"<<endl;
for(i=1;i<=n;i++)
cout<<x[i].f<<"^"<<x[i].p<<endl;
}
Rezultatul executiei programului

Programare orientata pe obiecte limbajele C++/Java


Laborator 1

Probleme propuse spre rezolvare


1) Studentii dintr-o facultate vor s fac un top al celor mai bune 10 melodii pentru fiecare
sptman. Ajutai-i s realizeze un program prin care se introduc n date de forma:
titlu melodie
interpret
numr puncte acumulate
numr puncte primite
i care afieaz primele 10 titluri, in ordinea descresctoare a punctelor.
2) Dintr-un lot de n persoane care s-au inregistrat cu nume i data naterii, trebuie selectate acele
persoane care au implinit 18 ani la 1 ianuarie 2011.
Datele de intrare cuprind:
valoarea lui n
i cele n perechi de date de forma nume dd mm yyyy
i sunt coninute de fiierul DATE.INT, iar datele de ieire conin numele cerute
afiate pe vertical pe ecran.
3) La o staie meteo se trec datele in fiierul TEMP.INT sub forma data temperatura. S se
prelucreze aceste date afiandu-se zilele in care temperatura a fost maxim.
4) Intr-o grup de maxim 25 de studenti, fiecare a primit cate unul din calificativele suficient,
bine i foarte bine la fiecare din cele 10 materii.
Datele se introduc in calculator sub forma:
nume student
numr de calificative suficient (s)
numr de calificative bine (b)
numr de calificative foarte bine (fb)
S se afieze in ordine descresctoare statistica notrii (numrul de suficient, de bine i
foarte bine) i numele studentului cu cele mai multe calificative fb.