lab 1 - POO (2013)
-
Upload
crisan-catalin -
Category
Documents
-
view
322 -
download
12
description
Transcript of lab 1 - POO (2013)
Programare orientata pe obiecte – limbajele C++/Java
Laborator 1
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)
Programare orientata pe obiecte – limbajele C++/Java
Laborator 1
2
{
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
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
4
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.