Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class MACIERZE{
- friend ostream &operator << (ostream &s1, MACIERZE &o1);
- friend istream &operator >> (istream &s1, MACIERZE &o1);
- double *ws;
- int wymiar;
- public:
- MACIERZE(){
- ws = NULL; //BO WARTOSC POCZATKOWA TO NIE musi byc 0
- wymiar = 0;
- };
- ~MACIERZE(){
- if(ws != NULL){
- delete [] ws;
- ws = NULL;
- }
- };
- MACIERZE &operator = (const MACIERZE & o1){
- if(this == &o1) {
- return *this;
- }
- if(this->ws != NULL){
- delete[] this->ws;
- //zarezerwowac nowy obszar
- }
- this->wymiar = o1.wymiar;
- this->ws = new double[this->wymiar*this->wymiar];
- //przeniesc elementy
- for(int x=0; x < this->wymiar*this->wymiar; x++){
- this->ws[x] = o1.ws[x];
- }
- return *this;
- }
- MACIERZE operator + (const MACIERZE &o2) {
- MACIERZE wynik;
- wynik.wymiar = o2.wymiar;
- wynik.ws = new double[wynik.wymiar * wynik.wymiar];
- for(int a=0; a<this->wymiar * this->wymiar; a++) {
- wynik.ws[a] = this->ws[a] + o2.ws[a];
- }
- return wynik;
- }
- MACIERZE operator - (const MACIERZE &o2) {
- MACIERZE wynik;
- wynik.wymiar = o2.wymiar;
- wynik.ws = new double[wynik.wymiar * wynik.wymiar];
- for(int a=0; a < this->wymiar * this->wymiar; a++) {
- wynik.ws[a] = this->ws[a] - o2.ws[a];
- }
- return wynik;
- }
- MACIERZE operator * (const MACIERZE &o2) { //dokończ
- MACIERZE wynik;
- wynik.wymiar = o2.wymiar;
- int suma, a, b;
- for(int x=0; x < this->wymiar*this->wymiar; x+=wymiar) {
- for(int y=0; y < this->wymiar; y++) {
- suma = 0;
- a = y;
- for(int z=0; z < this->wymiar; z++) {
- suma += this->ws[z]*o2.ws[a];
- a+=wymiar;
- }
- wynik.ws[y] = suma;
- }
- }
- /*wynik.ws = new double[wynik.wymiar * wynik.wymiar];
- for(int x=0; x < this->wymiar*this->wymiar; x += wymiar) {
- for(int y=0; y<this->wymiar*this->wymiar; y += x) {
- for(int z=0; z <this->wymiar; z++) {
- wynik.ws[z] = this->ws[z]*o2.ws[z];
- }
- }
- //while zamiast for??
- }*/
- return wynik;
- }
- int operator == (MACIERZE &o2) {
- //if(a==b)
- //zwraca 0 lub 1
- for(int x=0; x < this->wymiar*this->wymiar; x++) {
- if(this->ws[x] != o2.ws[x]) {
- return 0;
- }
- return 1;
- }
- }
- int operator < (MACIERZE &o2) {
- for(int x=0; x < this->wymiar*this->wymiar; x++) {
- if(this->ws[x] > o2.ws[x]) {
- return 0;
- }
- }
- return 1;
- }
- int operator > (MACIERZE &o2) {
- for(int x=0; x < this->wymiar*this->wymiar; x++) {
- if(this->ws[x] < o2.ws[x]) {
- return 0;
- }
- }
- return 1;
- }
- };
- ostream &operator << (ostream &s1, MACIERZE &o1){
- if(o1.ws != NULL){
- for(int i=0; i<o1.wymiar*o1.wymiar; i++){
- if(i%o1.wymiar == 0){
- s1 << endl;
- };
- s1 << o1.ws[i];
- }
- }
- return s1;
- }
- istream & operator >> (istream &s1, MACIERZE &o1){ //to różne funkcje wiec nie marekurencji
- if(o1.ws != NULL){
- delete[] o1.ws;
- }
- s1 >> o1.wymiar;
- o1.ws = new double[o1.wymiar*o1.wymiar];
- for(int j=0; j<o1.wymiar*o1.wymiar; j++){
- s1 >> o1.ws[j];
- }
- }
- int main(void)
- {
- /*MACIERZE zm;
- cin >> zm;
- cout << zm;
- zm.~MACIERZE();
- zm.~MACIERZE();*/
- MACIERZE a, b, c;
- cin >> a;
- cin >> b;
- if(a > b) {
- cout << "a>b" << endl;
- }
- else {
- cout << "nah" << endl;
- }
- //c = a*b;
- //cout << c;
- return 0;
- MACIERZE macierz;
- cin >> macierz;
- cout << macierz;
- macierz.~MACIERZE();
- macierz.~MACIERZE();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement