Sunteți pe pagina 1din 4

Ministerul Educației, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Microelectronică și Inginerie Biomedicală

Raport
la lucrarea de laborator nr. 5

Tema: Fluxurile Input şi Output standard şi definite de utilizatori.


Formatarea fluxurilor numerice şi textuale. Fluxurile stringuri şi de
memorie.

Disciplina: Programarea orientată pe obiecte

A efectuat

A verificat: lector.univ. Plotnic Constantin

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>

using namespace std;

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;

while(!flux.eof()) // ciclu pina la sfirsitul isierului


{
flux>>inreg[nr_inreg].nume;
flux>>inreg[nr_inreg].virsta;
nr_inreg++;
}
flux.close();
}

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.

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