consolidate all repos to one for archive
This commit is contained in:
71
semester_2/programiranje_2/naloga0801/SparseMatrix2D.h
Normal file
71
semester_2/programiranje_2/naloga0801/SparseMatrix2D.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#ifndef NALOGA0801_SPARSEMATRIX2D_H
|
||||
#define NALOGA0801_SPARSEMATRIX2D_H
|
||||
|
||||
#include <vector>
|
||||
#include "Element.h"
|
||||
|
||||
template<typename T>
|
||||
class SparseMatrix2D {
|
||||
private:
|
||||
std::vector<Element<T>> elements;
|
||||
unsigned int sizeX, sizeY;
|
||||
T defaultElement;
|
||||
public:
|
||||
SparseMatrix2D(unsigned int sizeX, unsigned int sizeY, T defaultElement);
|
||||
|
||||
void set(unsigned int x, unsigned int y, T value);
|
||||
|
||||
T at(unsigned int x, unsigned int y);
|
||||
|
||||
unsigned int getSizeX();
|
||||
|
||||
unsigned int getSizeY();
|
||||
|
||||
bool compareSize(SparseMatrix2D comp);
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
SparseMatrix2D<T>::SparseMatrix2D(unsigned int sizeX, unsigned int sizeY, T defaultElement) :
|
||||
sizeX(sizeX), sizeY(sizeY), defaultElement(defaultElement) {}
|
||||
|
||||
template<typename T>
|
||||
void SparseMatrix2D<T>::set(unsigned int x, unsigned int y, T value) {
|
||||
bool elementExiest = false;
|
||||
for (int i = 0; i < elements.size(); ++i) {
|
||||
if (elements[i].getX() == x and elements[i].getY() == y) {
|
||||
elements[i].setValue(value);
|
||||
elementExiest = true;
|
||||
}
|
||||
}
|
||||
if (!elementExiest) {
|
||||
Element<T> tmp(x, y, value);
|
||||
elements.push_back(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T SparseMatrix2D<T>::at(unsigned int x, unsigned int y) {
|
||||
for (int i = 0; i < elements.size(); ++i) {
|
||||
if (elements[i].getX() == x and elements[i].getY() == y) {
|
||||
return elements[i].getValue();
|
||||
}
|
||||
}
|
||||
return defaultElement;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
unsigned int SparseMatrix2D<T>::getSizeX() {
|
||||
return sizeX;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
unsigned int SparseMatrix2D<T>::getSizeY() {
|
||||
return sizeY;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool SparseMatrix2D<T>::compareSize(SparseMatrix2D comp) {
|
||||
return sizeX == comp.getSizeX() and sizeY == comp.getSizeY();
|
||||
}
|
||||
|
||||
#endif //NALOGA0801_SPARSEMATRIX2D_H
|
||||
Reference in New Issue
Block a user