mirror of
https://github.com/szymon-jozef/ZUT-notatki.git
synced 2026-09-07 12:10:40 +02:00
118 lines
3.2 KiB
C++
118 lines
3.2 KiB
C++
#include <iostream>
|
|
#include <ostream>
|
|
#define SIZE 2
|
|
|
|
class Macierz2x2 {
|
|
|
|
public:
|
|
int macierz[SIZE][SIZE];
|
|
Macierz2x2(int a, int b, int c, int d) {
|
|
macierz[0][0] = a;
|
|
macierz[0][1] = b;
|
|
macierz[1][0] = c;
|
|
macierz[1][1] = d;
|
|
}
|
|
Macierz2x2() {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
for (int j = 0; j < SIZE; j++) {
|
|
macierz[i][j] = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
Macierz2x2 &operator+=(const Macierz2x2 &inna_macierz) {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
for (int j = 0; j < SIZE; j++) {
|
|
macierz[i][j] += inna_macierz.macierz[i][j];
|
|
}
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
Macierz2x2 operator+(const Macierz2x2 &inna_macierz) const {
|
|
Macierz2x2 m = *this;
|
|
m += inna_macierz;
|
|
return m;
|
|
}
|
|
|
|
Macierz2x2 &operator-=(const Macierz2x2 &inna_macierz) {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
for (int j = 0; j < SIZE; j++) {
|
|
macierz[i][j] -= inna_macierz.macierz[i][j];
|
|
}
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
Macierz2x2 operator-(const Macierz2x2 &inna_macierz) const {
|
|
Macierz2x2 m = *this;
|
|
m -= inna_macierz;
|
|
return m;
|
|
}
|
|
|
|
Macierz2x2 operator*(const Macierz2x2 &inna_macierz) const {
|
|
Macierz2x2 m;
|
|
m.macierz[0][0] = macierz[0][0] * inna_macierz.macierz[0][0] +
|
|
macierz[0][1] * inna_macierz.macierz[1][0];
|
|
m.macierz[0][1] = macierz[0][0] * inna_macierz.macierz[0][1] +
|
|
macierz[0][1] * inna_macierz.macierz[1][1];
|
|
m.macierz[1][0] = macierz[1][0] * inna_macierz.macierz[0][0] +
|
|
macierz[1][1] * inna_macierz.macierz[1][0];
|
|
m.macierz[1][1] = macierz[1][0] * inna_macierz.macierz[0][1] +
|
|
macierz[1][1] * inna_macierz.macierz[1][1];
|
|
return m;
|
|
}
|
|
|
|
int *operator[](int x) { return macierz[x]; }
|
|
const int *operator[](int x) const { return macierz[x]; }
|
|
|
|
friend std::ostream &operator<<(std::ostream &os, Macierz2x2 &macierz) {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
os << '[';
|
|
for (int j = 0; j < SIZE; j++) {
|
|
os << macierz.macierz[i][j];
|
|
if (j < SIZE - 1)
|
|
os << " ";
|
|
}
|
|
os << ']';
|
|
os << '\n';
|
|
}
|
|
return os;
|
|
}
|
|
|
|
friend std::istream &operator>>(std::istream &is, Macierz2x2 &macierz) {
|
|
char separator;
|
|
is >> macierz.macierz[0][0] >> separator >> macierz.macierz[0][1] >>
|
|
separator >> macierz.macierz[1][0] >> separator >>
|
|
macierz.macierz[1][1];
|
|
return is;
|
|
}
|
|
|
|
explicit operator double() const {
|
|
return macierz[0][0] * macierz[1][1] - macierz[1][0] * macierz[0][1];
|
|
}
|
|
|
|
const int operator()(int i, int j) const { return macierz[i][j]; }
|
|
int &operator()(int i, int j) { return macierz[i][j]; }
|
|
};
|
|
|
|
int main() {
|
|
Macierz2x2 m1 = Macierz2x2(1, 2, 3, 4);
|
|
std::cout << "Macierz 1:\n";
|
|
std::cout << m1;
|
|
Macierz2x2 m2;
|
|
std::cout << "Podaj swoją macierz: \n";
|
|
std::cout << "Macierz 2:\n";
|
|
std::cin >> m2;
|
|
std::cout << m2;
|
|
Macierz2x2 m3 = m1 + m2;
|
|
Macierz2x2 m4 = m1 * m2;
|
|
std::cout << "Macierz 3(dodawanie):\n";
|
|
std::cout << m3 << std::endl;
|
|
std::cout << "Macierz 4(mnożenie):\n";
|
|
std::cout << m4 << std::endl;
|
|
std::cout << "Wyznacznik macierz m1: " << double(m1) << std::endl;
|
|
std::cout << "Element (1,1) macierzy m1: " << m1(1, 1) << std::endl;
|
|
;
|
|
}
|