Sunteți pe pagina 1din 6

Ministerul Educaţiei şi Tineretului al Republicii Moldova

Universitatea Tehnică a Moldovei


Departamentul Informatica si Ingineria Sistemelor

RAPORT
Lucrare de laborator Nr.7
la Programarea orientata pe obiect

A efectuat: st. gr. MI-161 Poalelungi Daniela

A verificat: Dr.Conf.Univ.Plotnic Constantin

Chişinău 2017
Tema: Prelucrarea excepţiilor. Blocul try{…} throw() catch()…

Scopul lucrării: familiarizarea studenţilor cu prelucrarea excepţiilor, lucrul cu blocul try{…}


throw () catch()…

Scrieţi un program care determină numărul maximal şi cel minimal dintr-un şir de numere
aleatoare dintr-un fişier. Subconsecutivitatea de elemente dintre numărul maximal şi cel minimal
determinat să se înregistreze într-un nou fişier.

Listingul programului:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
float a[100];
int i, j, min, max, locmin, locmax, start,r=0,u=0, end;
ofstream f1("file1.txt");
for (i=0; i<10; i++){
for (j=0; j<10; j++)
{f1<<" "<<(rand()%250+-120)<<" ";}
f1<<"\n";
}
cout<<"100 de numere au fost adaugate in file1.txt prin random.\n";
f1.close();
fstream f3("file1.txt",ios::in);
if(f3.fail()){
cout<<"Eroare la deschidere! \n ";
exit(0);
}
else
for(i=0;i<100;i++){
f3>>a[i];
}
cout<<"Datele au fost citite din file1.txt\n\n";
min=max=a[0];
for (i=0; i<100; i++){
try {
if (a[i]<min) {
min=a[i];
locmin=i;
}
if (a[i] < -100)
{
throw -100;
}
if (a[i]>max) {
max=a[i];
locmax=i;
}
if (a[i] > 100)
{
throw 100;
}
}
catch (int x) {
if(x == -100){
a[i] = -99;
r++;
cout << "Sunt generate cifre mai mici ca:"<< x <<" de "<<r<<" ori. Si
inlocuite cu -99."<< endl;}

else if(x == 100){


a[i] = 99;
u++;
cout << "Sunt generate cifre mai mari ca: "<< x <<" de "<<u<<" ori. Si
inlocuite cu 99."<< endl;}
}
}
f3.close();
fstream f2("file2.txt",ios::out);
f2<<" Elementul minimal detectat = "<<min<<"\n Elementul maximal detectat =
"<<max<<"\n";
cout<<"\n\Elementul minimal detectat = "<<min<<" Elementul maximal detectat =
"<<max<<"\n";
f2<<"S-au inserat "<<abs(locmax-locmin)<<" elemente.\n";
cout<<"S-au inserat "<<abs(locmax-locmin)<<" elemente.\n";
f2<<"Subconsecutivitatea de elemente dintre numarul maximal si cel minimal:\n ";
if (locmin<locmax) {start=locmin; end=locmax; }
else {start=locmax; end=locmin; }
for (i=start; i<end+1; i++){
f2<<a[i]<<" ";
cout<<a[i]<<" ";
}
cout<<"\nDatele au fost adaugate in file2.txt.\n";
f2.close();
return 0;
}
Rezultat: