Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici

Proiect
8/10 (1 vot)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 12 în total
Cuvinte : 2192
Mărime: 18.45KB (arhivat)
Puncte necesare: 7
Profesor îndrumător / Prezentat Profesorului: Adriana Sarbu

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

Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 1
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 2
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 3
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 4
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 5
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 6
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 7
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 8
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 9
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 10
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 11
Clasa matrice și principalele funcționalități necesare pentru lucrul cu matrici - Pagina 12

Conținut arhivă zip

  • Clasa Matrice si Principalele Functionalitati Necesare pentru Lucrul cu Matrici.doc

Alții au mai descărcat și

Arhitectura calculatoarelor - Intel vs AMD

Rezultatele din testul 3DS Max 7 SPECapc Test Testul alaturat consta in crearea modelelor 3D, modificarea si randarea scripturilor. Conform...

Autentificarea prin semnătură digitală

Introducere O semnatura digitala reprezinta o informatie care il identifica pe expeditorul unui document. Semnatura digitala este creata prin...

Sistem de Prognosticare a Unei Avarii

Acest sistem calculeaza gradul de avariere a unei cladiri în cazul unui cutremur, precum si posibila necesitate a reconstructiei cladirii (partiala...

Programare orientată pe obiecte

Cap. 1 Paradigme de programare şi metode de proiectare a programelor Noţiunea de paradigmă se bazează pe un cuvânt ce provine din limbile latină...

Structuri de Date

CAPITOLUL 1 Structuri elementare de date. În capitolul 1, introductiv, recapitulăm câteva din noţiunile introduse la ‘algoritmică’ şi anume: -...

Ai nevoie de altceva?