lab 1 - POO (2013)

4
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)

description

oop

Transcript of lab 1 - POO (2013)

Page 1: 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)

Page 2: lab 1 - POO (2013)

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;

}

Page 3: lab 1 - POO (2013)

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

Page 4: lab 1 - POO (2013)

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.