/*
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());
}
}