Extras din proiect
Tema II - Problema I
Cerinte minimale:
Sa se implementeze o clasa Matrice si principalele functionalitati necesare pentru lucrul cu matrici.
Sa se scrie un program de test in care sa se exemplifice creare de matrici, citirea si afisarea datelor de la consola, realizarea de operatii matematice cu scalari si matrici, scrierea si citirea unor matrici intr-un fisier.
Observatie 0 – Se discuta o implementare cu alocare dinamica de tip C++;
Observatie 1 - In cadrul laboratorului s-a urmarit functionarea unui program pentru Vectori;
Observatie 2 – in Tema I s-a realizat o aplicatie C pentru lucru cu matrici cu urmatoarele cerinte:
Pentru o matrice de dimensiuni mxn (m,n preluati de la consola) sa se calculeze:
a. suma si produsul elementelor matricii;
b. elementul maxim, elementul minim si pozitiile acestora;
c. numarul elementelor negative, numarul celor nule si numarul celor pozitive;
Pentru doua matrici A,B cu dimensiuni preluate de la consola:
d. sa calculeze suma elementelor de pe diagonala principala a unei matrici patratice;
e. sa se calculeze si afiseze matricea suma C=A+B (cele trei matrici au aceleasi dimensiuni mxn,);
f. Sa se calculeze si afiseze matricea produs C=A(mxn)*B(nxp).
Cerinte in completare (1):
Se precizeaza functionalitatile sugerate a fi implementate:
- constructor implicit;
- constructor explicit (mai multe variante … permite specificarea dimensiunii, permite specificarea dimensiunii si a unei valori initiale pentru elementele matricii, permite specificarea dimensiunii si a valorilor pentru elementele matricii intr-un tablou bi-dimensional);
- constructor de copiere si operator de atribuire;
- metode pentru aflarea dimensiunii matricii;
- metode pentru initializarea valorilor matricii (permite specificarea unei valori initiale pentru elementele matricii, permite specificarea valorilor pentru elementele matricii intr-un tablou bi-dimensional);
- metode pentru citirea / afisarea la consola;
- operatori << si >> de lucru cu streamuri;
- operatori binari +, -, * de lucru cu matrici (implementreaza A + B);
- operatori binari +, -, * de lucru cu matrici si scalari (implementeaza 5+C si C+5) ;
- operator unar – (implementeaza -D);
Se va scrie un program de test pentru exemplificarea functionalitatilor.
Cerinte in completare (2):
Pentru exemplificarea lucrului cu fisiere se va realiza:
- - un program care creaza un numar de matrici si le scrie intr-un fisier;
- - un al doilea program care citeste fisierul si afiseaza continutul lui;
Cerinte in completare (3):
Sa se implementeze alocarea si dealocarea de memorie cu un numar minim de operatii de alocare/dealocare.
Indicatie: Un exemplu de alocare de memorie pentu matrici este in Laborator 2: Alocarea dinamica a memoriei ( 03_Lab02.pdf). Exemplul presupune alocarea prin apelul functiiei new de N+1 ori (N – numarul de linii). Se solicita alocarea cu un singul apel al functiei new.
Tema II - Problema I (fisa de verificare)
Descriere implementare:
Implementarea este conform cerintelor.
Solutia implementeaza:
Cerinta autoevaluare evaluare
numai cerinta minimala NU
clasa MATRIX este declarata in fisierul ClasaMatr.h DA
metodele clasei MATRIX sunt implementate in fisierul MATRICE.cpp DA
implementarea este cu alocare dinamica DA
implementeaza metodele AlocareDinamica() (pentru alocare) si
DeAloc() (pentru dealocare) DA
am implementat constructorii cu prototipul
MATRIX(void);//constructor implicit
MATRIX(MATRIX const&);//constr de copiereMATRIX(int,int);//const cu parametru DA
am implementat destructor
~MATRIX(void);//destructor DA
am implementat constructor de copiere DA
am implementat operator de atribuire DA
am implementat functii friend, operatori de lucru cu stream-uri DA
am implementat metode pentru aflarea dimensiunii matricei
am implementat metode pentru initializarea matricei DA
am implementat operatori binari pentru operatii aritmetice cu matrici DA
am implementat operatori binari pentru operatii aritmetice cu matrici si scalari DA
implementarea este comutativa DA
am implementat operatori unari pentru operatii aritmetice cu matrici DA
Implementarea contine:
un program de test care exemplifica clasa Matrice DA
si alte 2 programe: unul pentru scriere in fisier iar al doilea pentru citire din fisier DA
structura fisierului este corect proiectata si generala DA
fisiere header .h cu protectie la dubla includere DA
declararea structurilor de date cu typedef si struct NU
alocare dinamica cu new / delete DA
alocare dinamica pentru matrici se face cu 1 apel de malloc/new DA
Despre aplicatie:
Proiectul este fara erori de compilare/linkeditare DA
Programul a fost testat cu seturi de date acoperitoare DA
Operatiile de intrare se fac cu verificare DA
Programul ruleaza fara erori DA
Programul ruleaza si intreaga memorie alocata este dealocata DA
// MATRICE.cpp : Defines the entry point for the console application.
//
//matrice.cpp
#include "stdafx.h"
#include "ClasaMatr.h"
#include "iostream.h"
#include "fstream.h"
#include "conio.h"
//Alocare si dealocare dinamica
int MATRIX::AlocareDinamica(int NrLinii, int NrColoana)
//alocare dinamica functie apelata in interiorul constructorului MATRIX cu parametri
{
if(stadiu != DESTRUCTED)
DeAloc();
stadiu=CONSTRUCTED;
MATRIX::NrLinii = NrLinii;
MATRIX::NrColoana = NrColoana;
//Se aloca memorie pt. pointerii la linii
Mat = new float[NrLinii * NrColoana];
//verificare alocare corecta a memoriei
if (Mat == NULL)
{
DeAloc();
return error;
}
return success;
}
//Dealocare de memorie
int MATRIX::DeAloc(void)
{
if(Mat != NULL)
{
delete []Mat;
Mat = NULL;
NrLinii = NrColoana = 0;
stadiu = DESTRUCTED;
}
return success;
}
//contructori si destructori
***********************
//Se defineste constructorul implicit
MATRIX::MATRIX(void)
//constructorul si destructorul trebuie sa aiba acelasi nume cu cel al clasei
{
stadiu=CONSTRUCTED;
Mat = NULL;
NrLinii = NrColoana = 0.
Preview document
Conținut arhivă zip
- Clasa Matrice si Principalele Functionalitati Necesare pentru Lucrul cu Matrici.doc