Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- void stampa(int*X, int n_ele, int colonne){
- int nr=n_ele/colonne, resto=n_ele%colonne;
- for(int i=0; i<nr; i++){
- for(int j=0; j<colonne; j++)
- cout<< X[i*colonne+j]<<' ';
- cout<<endl;
- }
- for(int i=0; i< resto; i++)
- cout<< X[nr*colonne+i]<<' ';
- cout<< endl;
- }
- //PRE=(p punta al primo elemento di X e gli altri parametri sono ben definiti)
- int& TV(int *X,int lim1,int lim2,int lim3,int n_ele,int fV,int nV,bool &b1){
- int x=nV/lim2;
- int y=nV%lim2;
- int posizione = x*lim2*lim3 + y*lim3 + fV;
- if(posizione<n_ele){
- b1=true;
- }
- else{
- b1=false;
- }
- return X[posizione];
- }
- //POST=(ok=true se l’elemento nV della V-fetta di indice f esiste ed è definito)
- // &&(se ok=true allora la funzione restituisce questo elemento per riferimento)
- int& TH(int *X,int lim1,int lim2,int lim3,int n,int fH,int nH,bool &b2){
- int x= nH/lim3;
- int y= nH%lim3;
- int posizione = x*lim2*lim3 + fH*lim3 + y;
- if(posizione < n){
- b2=true;
- }
- else{
- b2=false;
- }
- return X[posizione];
- }
- int main(){
- int X[100],lim1,lim2,lim3,n_ele;
- cin >>lim1 >> lim2 >> lim3 >> n_ele;
- for(int i=0; i<n_ele;i++)
- cin >> X[i];
- bool stop=false, b1=true,b2=true;
- while (!stop){
- int fV,nV, fH,nH;
- cin >> fV ;
- if(fV==-1)
- stop=true;
- else{
- cin >> nV >> fH >> nH;
- int &y=TV(X,lim1,lim2,lim3,n_ele, fV, nV, b1);
- int &z=TH(X,lim1,lim2,lim3,n_ele, fH, nH, b2);
- //cout<<"b1= "<<b1<<" b2= "<<b2<<endl;
- if(b1 && b2){
- int temp=y;
- y=z;
- z=temp;
- }
- else
- cout<<"operazione non consentita"<<endl;;
- }
- }
- stampa(X, n_ele, lim3);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement