All pastes #606126 Raw Edit

Elokuvateatteri

public text v1 · immutable
·published 2007-07-06 17:42 UTC
rendered paste body
public class Sali {
    
   private Elokuva elokuva;
   private boolean[][] paikat;
    
   public Sali(int rivienMaara, int paikkojaRivilla) {
        this.paikat = new boolean[rivienMaara][paikkojaRivilla];  
    }
    
    public boolean varaaPaikka(int rivi, int paikkaRivilla) {
         if(this.elokuva == null)
             return false;
        
         if (this.paikat[rivi-1][paikkaRivilla-1] == false) {
             this.paikat[rivi-1][paikkaRivilla-1] = true;
             return true;
         }
         else
             return false;
        
    }
    
    public boolean onkoVarattu(int rivi, int paikkaRivilla) {
    	if (this.paikat[rivi -  1][paikkaRivilla - 1] == true)
            return true;
        else
            return false;
    }
    
    public boolean varaaRyhmanPaikat(int ryhmanKoko) {
    	int varausrivi = 0, i, vierekkaisetVapaat = 0, j, merkki = 0, k;
    	boolean apumuuttuja = false;
    	
    	int paikatRivilla = this.kerroPaikkojenMaaraRivilla();
    	int rivit = this.kerroRivienMaara();
    	
    	
    	if(this.elokuva == null || ryhmanKoko > paikatRivilla)
            return false;
    	
    	if (rivit % 2 == 0)
    		varausrivi = rivit / 2;
    	else
    		varausrivi = (rivit + 1) / 2 - 1;
    	
    	for (j = 0; j < rivit; j++) {
    		if (apumuuttuja == false) {
    			for(i = 0; i < paikatRivilla; i++) {
    				if(this.onkoVarattu(varausrivi + 1, i + 1) == false) {
    					vierekkaisetVapaat++;
    					if (vierekkaisetVapaat == ryhmanKoko) {
    						merkki = i;
    						apumuuttuja = true;
    					}
    				}
    				else
        				vierekkaisetVapaat = 0;
    			}	
    		}
    		else if (vierekkaisetVapaat < ryhmanKoko) {
    			if ((j + 1) % 2 == 0) {
    				if (varausrivi < rivit) {
    					varausrivi += (j + 1);
    					i = 0;
    				} 	
    			}
    			else if (varausrivi - (j + 1) > 0) {
    				varausrivi -= (j + 1);
    				i = 0;
    			}
    			else if (varausrivi == rivit - 1) {
    				varausrivi = 0;
    				i = 0;
    			}
    			else if (varausrivi - (j + 1) == -1) {
    				varausrivi = rivit - 1;
    				i = 0;
    			}
    		}
    		else
    			for(k = 0; k < ryhmanKoko; k++) {
    				this.paikat[varausrivi][merkki - k] = true;
    			}
    		
    	}
    	return true;
    }
        
    public void asetaElokuva(Elokuva elokuva) {
        this.elokuva = elokuva;
    }
    
    public boolean poistaElokuva() {
        if (this.elokuva != null) {
            this.elokuva = null;
            return true;
        }
        else
            return false;
    }
    
    public Elokuva kerroElokuva() {
        return this.elokuva;
    }
    
    public int kerroRivienMaara() {
        return this.paikat.length;
    }

    public int kerroPaikkojenMaaraRivilla() {
        return this.paikat[0].length;
    }
    
    public int kerroVapaidenPaikkojenMaara() {
        int i, j, vapaat = 0;
       
        for (j = 0; j < this.paikat.length; j++) {
            for (i = 0; i < this.paikat[0].length; i++) {
                if (this.paikat[j][i] == false)
                    vapaat++;
            }
        }
        return vapaat;
    }
        
    public int kerroPaikkojenKokonaismaara() {
        int kokonaismaara;
        
        kokonaismaara = this.paikat.length * this.paikat[0].length;
        
        return kokonaismaara;
    }

}