Documente Academic
Documente Profesional
Documente Cultură
Raport
la lucrarea de laborator nr. 5
A efectuat
Chișinău – 2017
Scopul lucrării:
studierea moştenirii, avantajele şi dezavantajele;
studierea compoziţiei;
studierea regulilor de definire a moştenirii şi compoziţiei;
studierea formelor de moştenire;
studierea iniţializatorilor;
principiul de substituţie;
moştenirea şi compoziţia – ce să alegem.
Sarcina:
7. Scrieţi un program care ordonează lexicografic o consecutivitate de înregistrări (dintr-un fişier) de
tipul
struct { char nume [30];
int ani} înregistrare;
Rezultatul ordonării să se înscrie într-un nou fişier.
Listing-ul programului:
#include <iostream>
#include <fstream>
#include <vector>
//#include <windows.h>
#include <stdlib.h>
int nr_inreg ;
struct date
{
char nume[30];
int virsta;
};
class Fisier
{
fstream flux; // fluxul de date cu care vom opera.
fstream flux2;
protected:
date inreg[100]; // memoria dinamica in care vom prelucra datele
char *fisier_1, *fisier_2; // numele fisierelor de intrare is iesire
public:
Fisier(){}; // constructor prestabilit
Fisier(char *nume_f, char *nume_f2) // constructor cu parametru, deschidem fisier pentru
scriere/citire
{
flux.open(nume_f,ios::in);
if(flux.fail())
{
cout<<"Eroare la deschiderea fisierului_1";
//getch();
exit(1);
}
flux2.open(nume_f2,ios::out);
if(flux.fail())
{
cout<<"Eroare la deschiderea fisierului_2";
//getch();
exit(1);
}
fisier_1 = nume_f;
fisier_2 = nume_f2;
flux.close();
flux2.close();
}
void citire()
{
flux.open(fisier_1, ios::in); // deschidem fluxul pentru citire
nr_inreg = 0;
void scriere()
{
flux2.open(fisier_2, ios::out);
for(int i=0;i<nr_inreg;i++)
{
flux2<<inreg[i].nume<<" ";
flux2<<inreg[i].virsta<<"\n";
}
flux.close();
}
void ord_lex()
{
Fisier temp;
//temp.inreg[1];
for(int j=0;j<nr_inreg-1;j++)
for(int j=0;j<nr_inreg-1;j++)
{
for(int i=0;i < strlen(this->inreg[j].nume);i++)
{
if(this->inreg[j].nume[i] == this->inreg[j+1].nume[i]) continue;
else
if(this->inreg[j].nume[i] < this->inreg[j+1].nume[i]) break;
else
if(this->inreg[j].nume[i] > this->inreg[j+1].nume[i])
{
temp.inreg[0] = this->inreg[j];
this->inreg[j] = this->inreg[j+1];
this->inreg[j+1] = temp.inreg[0];
break;
}
}
}
}
void afisare()
{
for(int i=0;i<nr_inreg;i++)
{
cout<<"Numele:"<<inreg[i].nume<<endl;
cout<<"Virsta:"<<inreg[i].virsta<<" ani"<<endl;
}
}
};
int main()
{
// Fisier ob1("inreg.txt","inreg_ordonata.txt");
//ob1.citire();
ob1.afisare();
ob1.ord_lex();
ob1.scriere();
ob1.afisare();
return 0;
};
Concluzie:
Fluxurile de intrare şi ieşire definite în biblioteca standard sunt extrem de utile pentru lucru rapid
şi uşor cu procesarea şirurilor de date, fie acestea din fişiere, consolă sau alte dispozitive.