Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Compito.h"
- #include <iostream>
- using namespace std;
- Palazzo::Palazzo(int N)
- {
- if(N<=0)
- max=1;
- else
- max=N;
- p = new bool*[max];
- j=1;
- p[j-1]=new bool[j];
- p[j-1][j-1] =false;
- }
- Palazzo::~Palazzo() //destruktor
- {
- for(int i=0; i<j; i++) //elimino le finestre
- delete[] p[i];
- delete[] p; //uccido il palazzo
- }
- Palazzo::Palazzo(const Palazzo p1)
- {
- max=p1.max;
- j=p1.j;
- p = new bool*[max];
- for(int i=0; i<j; i++){
- p[i]= new bool[i+1];
- for(int k=0; k<i+1; k++)
- p[i][k]=p1.p[i][k];
- }
- }
- bool Palazzo::aggiungi()
- {
- if(j==max)
- return false;
- j++;
- p[j-1]=new bool[j];
- for(int k=0; k<j; k++)
- p[j-1][k]=false;
- return true;
- }
- bool Palazzo::cambia(int piano, int finestra)
- {
- if(piano>j || piano<=0 || finestra>piano)
- return false;
- p[piano-1][finestra-1]=!p[piano-1][finestra-1];
- return true;
- }
- Palazzo& operator%=(const Palazzo& p1)
- {
- if(j!=p1.j)
- return *this;
- for(int i=0; i<j; i++)
- for(int k=0; k<i+1; k++)
- if(p[i][k] && !p1.p[i][k])
- p[i][k] = false;
- return *this;
- }
- int operator!() const
- {
- int f=0;
- for (int i=0; i<j; i++)
- for(int k=0; k<i+1; k++)
- if(p[i][k])
- f++;
- return f;
- }
- ostream& operator<<(ostream& os, const Palazzo& p1)
- {
- os<<"<"<<p1.j<<">\n";
- for(int i=0; i<p1.j; i++){
- os<<"Piano "<<i+1<<":";
- for(int k=0; k<=i; k++){
- if(p1.p[i][k])
- os<<" Aperta";
- else
- os<<" Chiusa";
- }
- os<<endl;
- }
- return os;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement