Documente Academic
Documente Profesional
Documente Cultură
RAPORT
Lucrarea de laborator Nr.1
la Programarea n C++
Tema: Structura mecanism de abstractizare
A efectuat:
A verificat:
Chiinu, 2014
Balan Mihaela
Scopul lucrrii:
Studierea programrii prin abstractizarea datelor;
Studierea regulilor de definire i utilizare a structurilor de date;
Crearea variabilelor de tip structur, accesarea componentelor unei structuri.
Noiuni teoretice
Structura reprezint un tip abstract de date, un tip definit de utilizator prin utilizarea tipurilor
deja existente.
O structur poate fi definite n modul urmtor:
struct Date{
int day, month, year;
};
struct Student{
char *name;
Date birthDay;
float media;
};
Structura este o mulime de date grupate, conform unei ierarhii, de obicei de tipuri diferite.
Structura poate fi comparat cu tabloul, ns tabloul conine date de un acelai tip, iar elementele
tabloului se acceseaz cu ajutorul indicilor, pe cnd accesarea componentelor structurii are o form
specific.
Varianta 6
) S se creeze tipul abstract de date (structura) cas, care are denumirea firmei de construcie, adresa,
numrul etajelor i al apartamentelor. S se defineasc funciile de setare, de modificare a datelor, de
comparare a caselor. Pentru crearea cmpurilor textuale s se utilizeze operatorul new. S se elibereze
memoria. n main s se exemplifice sortarea caselor dup numrul de etaje+apartamente.
#include <iostream>
#include <process.h>
using namespace std;
void menu();
void afisare();
void citire();
void cautare();
void dlt();
int n,caut;
struct Home {
char *name;
int floor ;
int apartments;
char *address;
};
Home d[100];
void dlt () {
int i;
for (i=0; i<n; i++) {
delete [] d[i].name;
delete [] d[i].address;
}
}
void cautare() {
int etj,i,x=0;
system("cls");
if (caut==1) {
x=0;
cout<<"Introduceti numarul etajelor: ";
cin>>etj;
for (i=0; i<n; i++) {
if (etj==d[i].floor) {
x++;
cout<<"\tCasa nr."<<i+1;
cout<<"\nFirma de constructie: ";
cout<< d[i].name;
cout<<"\nNr. etajelor: ";
cout<<d[i].floor;
cout<<"\nNr. de apartamente: ";
cout<<d[i].apartments;
cout<<"\nAdresa: ";
cout<<d[i].address;
cout<<"\n\n";
}
}
if (x==0) cout<<"Nu este casa cu asa nr.de etaje!\n";
system("pause");
}
if (caut==2) {
x=0;
cout<<"Introduceti nr. de apartamente: ";
cin>>etj;
for (i=0; i<n; i++) {
if (etj==d[i].apartments) {
x++;
cout<<"\tCasa nr."<<i+1;
cout<<"\nFirma de constructie: ";
cout<< d[i].name;
cout<<"\nNr. etajelor: ";
cout<<d[i].floor;
cout<<"\nNr. de apartamente: ";
cout<<d[i].apartments;
cout<<"\nAdresa: ";
cout<<d[i].address;
cout<<"\n\n";
}
}
if (x==0) cout<<"Nu este casa cu asa nr. de apartamente!\n";
system("pause");
}
menu();
}
void afisare() {
int i;
system("cls");
for (i=0; i<n; i++) {
cout<<"\tCasa nr."<<i+1;
cout<<"\nFirma de constructie: ";
cout<< d[i].name;
cout<<"\nNr.etajelor: ";
cout<<d[i].floor;
cout<<"\nNr. de apartamente: ";
cout<<d[i].apartments;
cout<<"\nAdresa: ";
cout<<d[i].address;
cout<<"\n\n";
}
system("pause");
menu();
}
void menu() {
int x;
system("cls");
cout<<"\n\t1 - Afisarea datelor";
cout<<"\n\t2 - Cautare dupa nr.de etaje";
cout<<"\n\t3 - Cautare dupa nr.de apartamente";
//cout<<"\n\t2 - Compararea caselor";
cout<<"\n\t0 - Iesire\n";
cin>>x;
switch (x) {
case 1: {
afisare();
break;
}
case 2: {
//etaje
caut=1;
cautare();
break;
}
case 3: {
//apartamente
caut=2;
cautare();
break;
}
case 0: {
dlt();
break;
}
default: menu();
}
}
void citire () {
int i;
system("cls");
for (i=0; i<n; i++) {
cout<<"\tCase nr."<<i+1<<"\n";
cout<<"Firma de constructie : ";
d[i].name = new char[30];
cin>> d[i].name;
cout<<"Nr.de etaje: ";
cin>>d[i].floor;
cout<<"Nr. de apartamente: ";
cin>>d[i].apartments;
cout<<"Adresa: ";
d[i].address = new char[30];
cin>>d[i].address;
cout<<"\n";
}
menu();
}
int main () {
cout<<"Introduceti cite case pot fii?\n";
cin>>n;
citire();
return 0;
}
ntrebri de control:
1.Definii noiunea tip abstract de date.
Un tip definit de utilizator prin utilizarea zipurilor deja existente.