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;
}

2
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

3
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
săptămană. Ajutaţi-i să realizeze un program prin care se introduc n date de forma:
 titlu melodie
 interpret
 număr puncte acumulate
 număr puncte primite
 şi care afişează primele 10 titluri, in ordinea descrescătoare a punctelor.

2) Dintr-un lot de n persoane care s-au inregistrat cu nume şi data naşterii, 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 conţinute de fişierul DATE.INT, iar datele de ieşire conţin numele cerute
afişate pe verticală pe ecran.

3) La o staţie meteo se trec datele in fişierul TEMP.INT sub forma data temperatura. Să se
prelucreze aceste date afişandu-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
 număr de calificative suficient (s)
 număr de calificative bine (b)
 număr de calificative foarte bine (fb)
Să se afişeze in ordine descrescătoare statistica notării (numărul de suficient, de bine şi
foarte bine) şi numele studentului cu cele mai multe calificative fb.

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