save and load
This commit is contained in:
45
src/Matrix.h
45
src/Matrix.h
@@ -1,9 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
template <typename T>
|
||||
static bool EqualZero(T var) {
|
||||
@@ -19,9 +20,17 @@ class Matrix {
|
||||
std::vector<T> m_Data;
|
||||
|
||||
public:
|
||||
Matrix(const std::string& fileNameInput) {
|
||||
Load(fileNameInput);
|
||||
}
|
||||
Matrix(std::size_t lignes, std::size_t colonnes) : m_Lignes(lignes), m_Colonnes(colonnes), m_Dimension(lignes * colonnes) {
|
||||
m_Data.resize(m_Dimension);
|
||||
}
|
||||
Matrix(std::size_t lignes, std::size_t colonnes, std::initializer_list<T>&& initList) :
|
||||
m_Lignes(lignes), m_Colonnes(colonnes), m_Dimension(lignes * colonnes) {
|
||||
m_Data = initList;
|
||||
m_Data.resize(m_Dimension);
|
||||
}
|
||||
~Matrix() {}
|
||||
|
||||
void Print() const {
|
||||
@@ -52,15 +61,35 @@ class Matrix {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void DivideLine(T div, std::size_t line){
|
||||
for (size_t i = 0; i < count; i++)
|
||||
{
|
||||
|
||||
void Save(const std::string& fileName) {
|
||||
std::ofstream out{fileName};
|
||||
if (!out) {
|
||||
std::cerr << "Impossible de sauvegarder la matrice !\n";
|
||||
return;
|
||||
}
|
||||
out << m_Lignes << " " << m_Colonnes << "\n";
|
||||
for (std::size_t i = 0; i < m_Lignes; i++) {
|
||||
for (std::size_t j = 0; j < m_Colonnes; j++) {
|
||||
out << at(i, j) << " ";
|
||||
}
|
||||
out << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
void Load(const std::string& filename) {
|
||||
std::ifstream in{filename};
|
||||
if (!in) {
|
||||
std::cerr << "Impossible de charger la matrice !\n";
|
||||
return;
|
||||
}
|
||||
in >> m_Lignes >> m_Colonnes;
|
||||
m_Data.resize(m_Lignes * m_Colonnes);
|
||||
for (std::size_t i = 0; i < m_Lignes; i++) {
|
||||
for (std::size_t j = 0; j < m_Colonnes; j++) {
|
||||
in >> at(i, j);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
void GaussJordan() {
|
||||
int r = -1;
|
||||
|
||||
21
src/main.cpp
21
src/main.cpp
@@ -1,25 +1,16 @@
|
||||
#include "Matrix.h"
|
||||
|
||||
void test() {
|
||||
Matrix<float> mat(3, 3);
|
||||
mat.at(0, 0) = mat.at(2, 0) = 1;
|
||||
mat.at(0, 1) = mat.at(2, 1) = 2;
|
||||
mat.at(0, 2) = mat.at(2, 2) = 3;
|
||||
|
||||
mat.at(1, 0) = 4;
|
||||
mat.at(1, 1) = 5;
|
||||
mat.at(1, 2) = 6;
|
||||
|
||||
Matrix<float> mat{"matrice3x3.mat"};
|
||||
mat.Print();
|
||||
//mat.Save("matrice3x3.mat");
|
||||
mat.GaussJordan();
|
||||
std::cout << "\nResultat :\n";
|
||||
mat.Print();
|
||||
mat.Save("matrice3x3echelonne.mat");
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
test();
|
||||
|
||||
std::cout << "hello world!" << std::endl;
|
||||
void prompt() {
|
||||
std::cout << "Quelle est le nombre de lignes de votre matrice ?" << std::endl;
|
||||
std::size_t lignes;
|
||||
std::cin >> lignes;
|
||||
@@ -36,6 +27,10 @@ int main(int argc, char** argv) {
|
||||
mat.GaussJordan();
|
||||
std::cout << std::endl;
|
||||
mat.Print();
|
||||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
test();
|
||||
prompt();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user