All pastes #282461 Raw Edit

Someone

public text v1 · immutable
#282461 ·published 2006-12-17 16:32 UTC
rendered paste body
/*
	Oving10a.java
	oppgave fra it's learning (modifisert 7.18.2)
*/

/*
 * Temperaturer.java
 * Skjelettet til klassen Temperaturer som skal utvides i øving 10, oppave 7.18.2
 *
 * Temperaturer inneholder en todimensjonal tabell med
 * temperaturer (heltall) for hver time i døgnet i en måned.
 * Klasse skal være mutabel.
 *
 * Det er satt opp tre private hjelpmetoder som kan brukes til å sjekke indeksene
 */

class Temperaturer {
  private String måned;
  private int[][] temperaturdata; // dager ("linjer") x timer ("kolonner")

  public Temperaturer(String startMåned, int antDager, int antTimer) {
    måned = startMåned;
    temperaturdata = new int[antDager][antTimer];
  }

  public void settAll(int[][] temp) {
	  if (gyldigeIndekser(temp.length-1, temp[0].length-1)) {
		for (int i = 0; i < temp.length; i++) {
		  for (int x = 0; x < temp[i].length; x++) {
			  temperaturdata[i][x] = temp[i][x];
		  }
		}
	}
}

  public String finnMåned() {
    return måned;
  }

  public int finnAntDager() {
    return temperaturdata.length;
  }

  public int finnTimeDag(int dag, int time){
	  if (gyldigeIndekser(dag,time)) {
		  return temperaturdata[dag][time];
	  }
	  else {
		  return -1;
	  }
  }

  public void settTimeDag(int dag, int time, int temp) {
	  if (gyldigeIndekser(dag,time) && temp >= 0) {
	  	  temperaturdata[dag][time] = temp;
	  }
  }
  //Finn middeltemperatur for hver dag i en måned
  public double midTempDag(int dag) {
	  int sum = 0;
	  if (gyldigDagnr(dag)) {
		  for (int i = 0; i < temperaturdata[dag].length; i++) {
			  sum += temperaturdata[dag][i];
		  }
		  return (double)sum / (double)(temperaturdata[dag].length);
	  } else {
		  return -1.0;
	  }
  }
	//Finn middeltemperatur for hver time i en måned
  public double midTempTime(int time) {
	  int sum = 0;
	  //siden det er en kvadratisk tabell holder det å sjekke riktig index for èn dag
	  if (gyldigTimenr(0, time)) {
		  for (int i = 0; i < temperaturdata.length; i++) {
			  sum += temperaturdata[i][time];
		  }
		  return (double)sum / (double)(temperaturdata.length);
	  } else {
		  return -1.0;
	  }
  }
	//Finn middeltemperaturen til hele måneden
  public double midTempAll() {
	  int sum = 0;
	  int timer = 0;
	  //to loops, en for dager, en for timer i den dagen
	  for (int i = 0; i < temperaturdata.length; i++) {
		  for (int x = 0; x < temperaturdata[i].length; x++) {
			  sum += temperaturdata[i][x];
			  timer++;
		  }
	  }
	  return (double)sum / (double)timer;
  }

  // Tre private hjelpemetoder for å kontrollere indekser:
  private boolean gyldigDagnr(int dagnr) {
    return dagnr >= 0 && dagnr < temperaturdata.length;
  }

  private boolean gyldigTimenr(int dagnr, int timenr) {
    return temperaturdata.length > 0
        && timenr >= 0
        && timenr < temperaturdata[dagnr].length;
  }

  private boolean gyldigeIndekser(int dagnr, int timenr) {
    return gyldigDagnr(dagnr) && gyldigTimenr(dagnr, timenr);
  }

}// Temperaturer

class Oving10a {
	public static void main (String[] args) {
		Temperaturer temp = new Temperaturer("Test", 4, 5);
		int[][] tempy = {{15,17,20,22,18},{14,15,15,17,16},{18,19,20,22,22},{16,20,21,22,21}};
		temp.settAll(tempy); //sets all data :)
		System.out.println("dager: " + temp.finnAntDager());
		System.out.println("dag2: " + temp.midTempDag(2));
		System.out.println("t4: " + temp.midTempTime(4));
		System.out.println("all: " + temp.midTempAll());

	}
}






/*
	Oving10b.java
	Oppgave 7.18.4 fra boka
*/

//Student10b istedet for Student fordi det er mange Student.class i classpath
class Student10b {
	private String navn;
	private int antOppg;

	public Student10b(String navn, int oppg) {
		this.navn = navn;
		this.antOppg = oppg;
	}

	public String finnNavn() {
		return navn;
	}

	public int finnAntOppg() {
		return antOppg;
	}

	public void incAntOppg(int increase) {
		//datavalidering
		this.antOppg += increase;
	}

	public String toString() {
		return "Navn: " + navn + "\nAnt Oppg: " + antOppg;
	}
}

class Oppgaveoversikt {
	private Student10b[] studenter;
	private int antStud = 0;

	public Oppgaveoversikt(int antStud) {
		studenter = new Student10b[antStud];
	}

	public int finnAntStud() {
		return antStud;
	}

	public int finnStudAntOppg ( int student ) {
		//her burde det ha vært datavalidering
		return studenter[student].finnAntOppg();
	}

	public boolean regStud(String navn, int antOppg) {
		if (antStud < studenter.length) {
			studenter[antStud] = new Student10b(navn, antOppg);
			antStud++;
			return true;
		} else {
			return false;
		}
	}

	public void incStudOppg (int student, int increase) {
		studenter[student].incAntOppg(increase);
	}

	public String toString() {
		String output = "Studenter:";
		for (int i = 0; i < antStud; i++) {
			output += "\n\n" + studenter[i].toString();
		}
		return output;
	}
}


class Oving10b {
	public static void main (String[] args) {
		/*
			Student10b TestKlient
		*/
		System.out.println("\n\nStudent10b TestKlient");
		Student10b stud = new Student10b("Jens", 3);
		System.out.println("Student: " + stud.finnNavn());
		System.out.println("Ant Oppg: " + stud.finnAntOppg());
		stud.incAntOppg(2);
		System.out.println("toString:\n" + stud.toString());


		/*
			Oppgaveoversikt TestKlient
		*/
		System.out.println("\n\nOppgaveoversikt TestKlient");
		Oppgaveoversikt oos = new Oppgaveoversikt(5);
		if(!oos.regStud("Jens", 4)) System.out.println("\nOversikt full");
		if(!oos.regStud("Pål", 2)) System.out.println("\nOversikt full");
		if(!oos.regStud("Trine", 1)) System.out.println("\nOversikt full");
		if(!oos.regStud("Lol", 53)) System.out.println("\nOversikt full");
		if(!oos.regStud("omglol", 0)) System.out.println("\nOversikt full");
		if(!oos.regStud("too many", 0)) System.out.println("\nOversikt full");
		System.out.println("\nAntStud: " + oos.finnAntStud());
		System.out.println("\nStudent 2: " + oos.finnStudAntOppg(2));
		oos.incStudOppg(2, 3);
		System.out.println("added 3 oppg to student [2]");
		System.out.println("dump:\n" + oos.toString());
	}
}