//-------------------------------------------------------- // // Fil: Oppg1.java - // løser oppgave 1 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import java.io.*; import java.util.*; import javagently.text; public class Oppg1 static PrintWriter ut; static BufferedReader inn; static String [] løpsklassenavn = "Aktiv herre elite", "Aktiv herre B", "Aktiv dame elite", "Aktiv dame B", "Bedrift dame", "Bedrift herre", "Bedrift blandet"; static int klassemeny() throws IOException System.out.println(" Velg ny løpsklasse (0 = ferdig): \n"); System.out.println((i+1) + " - " + løpsklassenavn[i+1]); int j = Text.readInt(inn); return j; public static void main ( String[] args) throws IOException String klubb, løperfnavn, løperenavn, løperpnr; int løpskl; inn = Text.open(System.in); ut = Text.create("Holmenkoll.data"); System.out.println("\n -- Program for å lage Holmenkoll-stafett - fil: \n"); System.out.print("Tast klubbens navn:"); klubb = Text.readString(inn); ut.println(klubb); løpskl = klassemeny(); while ( løpskl!= 0) ut.println(løpsklassenavn[løpskl-1]); for (int i = 1; i < 16; i++) System.out.print("\nGi fornavn på løper " + i +" :"); løperfnavn = Text.readString(inn); System.out.print("\nGi etternavn på løper " + i +" :"); løperenavn = Text.readString(inn); System.out.print("\nGi personnavn på løper " + i +" :"); løperpnr = Text.readString(inn); ut.println( i + " " +løperfnavn + " " + løperenavn + " " + løperpnr); løpskl = klassemeny(); ut.println("zzz"); ut.close();
// end main // end **** class Oppg1 ***** //-------------------------------------------------------- // // Fil: Holmenkollen.java - // løser oppgave 2 i eksamensettet for in105 - v99 // //-------------------------------------------------------- import java.io.*; import java.util.*; import javagently.text; class Deltager String navn, pnum; int nr; Deltager (int i) nr = i; void lesdeltager(bufferedreader data)throws IOException int i = Text.readInt(data); if (i!= (nr+1) )System.out.println("Feil i fila, i delager nr :" + nr); navn = Text.readString(data) + " " + Text.readString(data); pnum = Text.readString(data); String lesnavn() return navn; String lespnum() return pnum; void skrivnavn(string n) navn =n; void skrivpnum(string p) pnum =p; class LopsKlasse String tittel; int klassenr; int starttime, startmin, startsek = 0; Hashtable lagene = new Hashtable(); // key = Klubb, elem = Lag LopsKlasse(String t, int nr) tittel = t; klassenr = nr; class Lag LopsKlasse lop; Klubb klubben; int startnum, slutttime, sluttmin, sluttsek; int plassering = 1; Deltager [] lopere = new Deltager[15]; Lag(Klubb k, LopsKlasse l) lop = l; klubben = k; void leslag(bufferedreader data)throws IOException
for (int i = 0; i<15; i++) lopere [i] = new Deltager(i); lopere[i].lesdeltager(data); int slutttid() return ((slutttime - lop.starttime)*3600 + (sluttmin - lop.startmin)*60 + (sluttsek - lop.startsek)); class Klubb String navn; int antlag = 0; Lag lagene [] = new Lag[7]; Klubb (String n) navn = n; void nyttlag( int lklasse, Lag l) lagene[lklasse] = l; antlag++; class HolmenkollLopet Hashtable alleklubbene = new Hashtable(), // key = KNavn, elem = Klubb allelagene = new Hashtable(); // key = Lag (ikke bruket) elem = Lag LopsKlasse [] start = new LopsKlasse[7]; BufferedReader data; HolmenkollLopet () for(int i = 0; i<7; i++) start[i] = new LopsKlasse(Holmenkollen.lopsKlasseNavn[i],i); int leslopsklasse() throws IOException // OPPGAVE 2C - metode 1 (av 2) // leser indeksen til lopsklassen fra fil "Akiv herre elite" = 0,... // "ZZZ" - returnerer -1 String s1 = Text.readString(data), s2, s3; int svar = 0; if(s1.equals("zzz")) return -1; s2 = Text.readString(data); if( s1.equals("bedrift")) if ( s2.equals("herre")) svar = 4; else if ( s2.equals("dame")) svar = 5; else svar = 6; else s3 = Text.readString(data); if ( s2.equals("herre") && s3.equals("elite")) svar = 0; else if (s2.equals("herre") && s3.equals("b")) svar = 1; else if (s2.equals("dame") && s3.equals("elite")) svar = 2;
else svar = 3; return svar; // end leslopsklasse void lesfrafil(string fnavn) throws IOException // OPPG 2C - metode 2 (av 2) String klubbnavn, klassenavn, loperfnavn, loperenavn, loperpnr; int lopskl; Klubb k; Lag l; data = Text.open(fNavn); klubbnavn = Text.readString(data); k = new Klubb(klubbNavn); alleklubbene.put(klubbnavn,k); lopskl = leslopsklasse(); while (lopskl >0) l = new Lag( k, start[lopskl]); l.leslag(data); k.nyttlag(lopskl,l); start[lopskl].lagene.put(k,l); allelagene.put(l,l); lopskl = leslopsklasse(); data.close(); // end lesfrafil void sjekk( Lag l) // OPPGAVE 2 D String p,p2; Lag l2; for( int i = 0; i < 15; i++) p = l.lopere[i].lespnum(); for ( Enumeration e = allelagene.elements(); e.hasmoreelements();) l2 = (Lag) e.nextelement(); for (int j = 0; j < 15; j++) p2 = l2.lopere[j].lespnum(); if (p.equals(p2) && p!= p2) // same value, different object System.out.println(" Personen: " + l.lopere[i].lesnavn() + ", med Pnr: " + p + " deltar på:" + l.klubben.navn + " og " + l2.klubben.navn );
// end sjekk void sjekkalle() // Laget for å være egnet for kall fra hovedmeny - 2 D Lag l; for ( Enumeration e = allelagene.elements(); e.hasmoreelements();) l = (Lag) e.nextelement(); sjekk(l); // end sjekkalle void endrepåmelding(bufferedreader inn ) throws IOException // OPPGAVE 2 E String Knavn,pnum,f,e; Klubb k; int lopsk; Lag l = null; Text.prompt("Gi klubb-navn:"); Knavn = Text.readString(inn); k = (Klubb)alleKlubbene.get(Knavn); System.out.println("Gi løpsklasse:"); for ( int i = 0; i < 7 ; i++) System.out.println( i + " - " + Holmenkollen.lopsKlasseNavn[i]); lopsk = Text.readInt(inn); if (k!= null) l = (Lag) start[lopsk].lagene.get(k); if (l == null) System.out.println("Feil i klubb-navn."); else System.out.println("Velg : T - trekke lag, E - endre lag: "); if (Text.readString(inn).equals("T")) // Trekk et lag start[lopsk].lagene.remove(k); allelagene.remove(l); k.lagene[lopsk]=null; k.antlag --; if ( k.antlag == 0) alleklubbene.remove(knavn); else // endre et lag System.out.print("Gi personnummer til løper som skal ut:"); pnum = Text.readString(inn); while (! pnum.equals("0")) int i; for ( i = 0; i < 15 ; i++) if( l.lopere[i].lespnum().equals(pnum)) break; if ( i < 15) System.out.print("Gi nytt fornavn:");
f = Text.readString(inn); System.out.print("Gi nytt etternavn:"); e = Text.readString(inn); l.lopere[i].skrivnavn( new String(f+ " " +e)); System.out.print("Gi nytt personnummer:"); l.lopere[i].skrivpnum ( new String(Text.readString(inn))); else System.out.println("Feil i personnummer."); System.out.print("Gi personnummer til løper som skal ut (0 = ferdig):"); pnum = Text.readString(inn); // end endrepåmelding void startnummer() // OPPGAVE 2 F int num = 1; for(enumeration e = start[i].lagene.elements(); e.hasmoreelements();) ((Lag)e.nextElement()).startNum = num++; // end startnummer void gistarttidspunkt() // OPPGAVE 2 G LopsKlasse lk; int oldtime = 12, oldmin = 0, oldnum =0, faktor; String s = "00"; lk = start[i]; lk.startmin = oldmin; lk.starttime = oldtime; faktor = lk.lagene.size()/100 + 1; oldmin += faktor * 15; while (oldmin >= 60) oldmin -= 60; oldtime++; if (lk.startmin == 0 ) s = "00" ; else s= "" + lk.startmin; System.out.println("Løpsklasse: " + lk.tittel + ", starter kl." + lk.starttime +"." + s + ".00, antall Lag =" + lk.lagene.size()); // end gistarttidspunkt void regslutttider(bufferedreader inn ) throws IOException // OPPGAVE 2 H int startnum; boolean found ; Lag l = null; System.out.print("Gi startnummer (avslutt med 0):"); startnum = Text.readInt(inn); while ( startnum > 0)
found = false; for (int i = 0; i < 7 &&! found; i++) for(enumeration e = start[i].lagene.elements(); e.hasmoreelements() &&! found;) l =(Lag)e.nextElement(); if (l.startnum == startnum) found = true; if (! found) System.out.println("Feil start-nummer"); else System.out.print("Gi slutttime:"); l.slutttime = Text.readInt(inn); System.out.print("Gi sluttmin:"); l.sluttmin = Text.readInt(inn); System.out.print("Gi sluttsek:"); l.sluttsek = Text.readInt(inn); System.out.print("Gi startnummer (avslutt med 0):"); startnum = Text.readInt(inn); // end regslutttider void finnvinnere() // OPPGAVE 2 I Lag l = null, bestelag ; int bestetid ; l = null; bestelag = null; bestetid = 10000000; for(enumeration e = start[i].lagene.elements(); e.hasmoreelements();) l =(Lag)e.nextElement(); if (l.slutttid() < bestetid ) bestetid = l.slutttid(); bestelag = l; if ( l!= null) System.out.println("Vinner i " + start[i].tittel + " er: " + bestelag.klubben.navn); // end finnvinner void giklubbeneresultatliste() // OPPGAVE 2J Lag l = null ; Klubb k = null; int slutttid ; for(enumeration e = start[i].lagene.elements(); e.hasmoreelements();) l =(Lag)e.nextElement(); slutttid = l.slutttid(); for(enumeration e2 = start[i].lagene.elements(); e2.hasmoreelements();) if ( ((Lag)e2.nextElement()).sluttTid() < slutttid) l.plassering ++; for (Enumeration e = alleklubbene.elements(); e.hasmoreelements();) k = (Klubb) e.nextelement(); System.out.println("Resultatliste for klubben: " + k.navn);
for (int i= 0; i < 7; i++) l = k.lagene[i]; if (l!= null) System.out.println("Løpsklasse: " + l.lop.tittel + ", plass: " + l.plassering + ",tid (sekunder):" + l.slutttid()); // end giklubbeneresultatliste // end class HolmenkollLopet public class Holmenkollen static BufferedReader inn; static String [] lopsklassenavn = "Aktiv herre elite", "Aktiv herre B", "Aktiv dame elite", "Aktiv dame B", "Bedrift dame", "Bedrift herre", "Bedrift blandet"; static int meny() throws IOException System.out.println("\nVelg funksjon: "); System.out.println("0 - Avslutt "); System.out.println("1 - Les kubbfil"); System.out.println("2 - Sjekk løpere (alle mot alle) "); System.out.println("3 - Trekke lag eller endre løpere "); System.out.println("4 - Gi startnummer "); System.out.println("5 - Gi starttider, skriv startliste "); System.out.println("6 - Registrer slutt-tider "); System.out.println("7 - Finn vinnere i hver løpsklasse "); System.out.println("8 - Gi klubbene resultatliste "); return Text.readInt(inn); public static void main ( String[] args) throws IOException HolmenkollLopet h; inn = Text.open(System.in); h = new HolmenkollLopet(); System.out.println("\n -- Program for å administrere Holmenkollløpet ---: \n"); int menyvalg = meny(); while ( menyvalg!= 0) switch(menyvalg) case 1: Text.prompt("Gi klubb-fil navn:"); h.lesfrafil(text.readstring(inn)); break; case 2: h.sjekkalle(); break; case 3: h.endrepåmelding(inn); break; case 4: h.startnummer(); break; case 5: h.gistarttidspunkt(); break; case 6: h.regslutttider(inn); break; case 7: h.finnvinnere(); break; case 8: h.giklubbeneresultatliste(); break; default: System.out.println("Velg et tall mellom 0 og 7"); break;
menyvalg = meny(); System.out.println("Programmet er ferdig"); // end main // end **** class Holmenkollen *****