// espemyk g-3 o-2 k-inf1000/h04

/*
 * Oblig2 for Espen Myklevoll
 * Created on 14 September 2004, 17:47
 */

import easyIO.*;

class Oblig2
{
    public static void main(String[]args) {
        
        In tast = new In();
        Out print = new Out();
        
        int radnr;
        int kolnr;
        
        String [][] eier = new String[15][25];
        int [][] utvunnet = new int[15][25];

        int valg = 0;
        while (valg != 8) {
            print.outln("");
            print.outln("*** VELKOMMEN TIL RURITANIAS OLJEOVERSIKT ***");
            print.outln("");
            print.outln("Du har følgende valgmuligheter:");
            print.outln(" 1. Kjøp et felt");
            print.outln(" 2. Annuler kjøp av et felt");
            print.outln(" 3. Lag oversiktskart");
            print.outln(" 4. Lag liste over oljeselskaper");
            print.outln(" 5. Oppdater oljeutvinning");
            print.outln(" 6. Finn maksimal oljeutvinning");
            print.outln(" 7. Finn gjennomsnittlig oljeutvinning");
            print.outln(" 8. Avslutt");
            print.out("Velg kommando: ");
            valg = tast.inInt();
            
            switch (valg) {
                case 1: // kjøp felt
                    boolean ledigFelt = false; // finner ut om det er noen ledige felt
                    for (int i = 0; i < 15; i++) {
                        for (int j = 0; j < 25; j++) {
                            if (eier[i][j] == null) {
                                ledigFelt = true;
                            }
                        }
                    }
                    
                    if (ledigFelt = false) {
                        print.outln("Beklager, alle feltene er for tiden solgt ut.");
                    } else {
                        print.out("Angi navnet på kunden: ");
                        String navn = tast.inWord("\n");
                        
                        print.out("Angi koordinatene på feltet som ønskes kjøpt(F(X,Y)): ");
                        radnr = tast.inInt("F(,");
                        kolnr = tast.inInt(",)");
                        tast.inLine();
                        
                        if (eier[radnr][kolnr] == null) {
                            eier[radnr][kolnr] = navn;
                            print.outln("Feltet F(" + radnr + "," + kolnr + ") selges til " + navn + ".");
                        } else {
                            print.outln("Beklager, feltet er allerede solgt.");
                        }
                    }
                    break;
                case 2: // annuler kjøp
                    print.out("Angi koordinatene til feltet som selges: "); // finn ut om utvinningen skal nullstilles ved salg
                    radnr = tast.inInt("F(,");
                    kolnr = tast.inInt(",)");
                    tast.inLine();
                    
                    if (eier[radnr][kolnr] != null) { // sjekker om feltet er eid av noen, hvis ikke, sier ifra
                        eier[radnr][kolnr] = null;
                        print.outln("Salget var vellykket.");
//                      utvunnet[radnr][kolnr] = 0;
//                      fjern // i linja over hvis antall utvunnede fat skal nullstilles ved salg av felt
                    } else {
                        print.out("Feltet er allerede fritt.");
                    }
                    break;
                case 3: // oversiktskart
                    print.outln("Oversiktskart over feltene");
                    print.out("   ");
                    for (int l = 0; l<25; l++) {
                        print.out(l, 5);
                    }
                    print.outln("");
                    for (radnr = 0; radnr<utvunnet.length; radnr++){
                        print.out(radnr, 5);
                        print.out("  ");
                        for (kolnr = 0; kolnr<utvunnet[radnr].length; kolnr++) {
                            if (eier[radnr][kolnr] != null) {
                                print.out("X", 5);
                            } else {
                                print.out(".", 5);
                            }
                        }
                        print.outln("");
                    }
                    break;
                case 4: // liste
                    print.outln("Liste over selskaper med tilhørende felter");
                    String [] liste = new String[375]; // 375 felt, derfor 375 potensielle eiere
                    int arrayPlass = 0;
                    int i = 0;
                    for (radnr = 0; radnr<utvunnet.length; radnr++){
                        for (kolnr = 0; kolnr<utvunnet[radnr].length; kolnr++) {
                            String navn = eier[radnr][kolnr];
                            boolean funnet = false;
                            
                            if (navn != null) {
                                for(i = 0; i <= arrayPlass; i++) {
                                    if (navn.equals(liste[i])) {
                                        funnet = true;
                                    }
                                }
                            }
                            if (!funnet) {
                                liste[arrayPlass] = navn;
                                arrayPlass++;
                            }
                        }
                    }
                    for (i = 0; i < arrayPlass; i++) {
                        if (liste[i] != null) {
                            print.outln("||" + liste[i]);
                            for (radnr = 0; radnr<utvunnet.length; radnr++){
                                for (kolnr = 0; kolnr<utvunnet[radnr].length; kolnr++) {
                                    if (eier[radnr][kolnr] != null && eier[radnr][kolnr].equalsIgnoreCase(liste[i])) {
                                        print.outln("F(" + radnr + "," + kolnr + ")");
                                    }
                                }
                            }
                            print.outln("");
                        }
                    }
                    break;
                case 5: // oppdater utvinning
                    print.out("Angi koordinatene til feltet du vil oppdatere utvinningen til(F(X,Y)): ");
                    radnr = tast.inInt("F(,");
                    kolnr = tast.inInt(",)");
                    tast.inLine();
                                        
                    print.out("Angi siste 3 måneders utvinning: ");
                    int nyut = tast.inInt();
                    
                    if (eier[radnr][kolnr] != null) { // hvis ikke feltet eies av noen, gir melding om det
                        utvunnet[radnr][kolnr] += nyut;
                    } else {
                        print.out("Dette feltet har for tiden ingen eier, prøv igjen.");
                    }
                    print.outln("Ny total er: " + utvunnet[radnr][kolnr] + " fat.");
                    break;
                case 6: // maksimal utvinning
                    int maksVerdi = 0;
                    String maksEier = null;
                    radnr = 0;
                    kolnr = 0;
                    int x = 0;
                    int y = 0;
                    for (radnr = 0; radnr<utvunnet.length; radnr++){
                        for (kolnr = 0; kolnr<utvunnet[radnr].length; kolnr++) {
                            if (utvunnet[radnr][kolnr] > maksVerdi) {
                                maksVerdi = utvunnet[radnr][kolnr];
                                maksEier = eier[radnr][kolnr];
                                x = radnr;
                                y = kolnr;
                            }
                        }
                    }
                    print.outln("Det er tatt ut " + maksVerdi + " fat olje fra feltet F(" + x + "," + y + "), som er den største utvinningen.");
                    print.outln("Feltet eies nå av " + maksEier + ".");
                    break;
                case 7: // gjennomsnittlig utvinning
                    int antallFelter = 0;
                    int totalUt = 0;
                    for (radnr = 0; radnr<utvunnet.length; radnr++){
                        for (kolnr = 0; kolnr<utvunnet[radnr].length; kolnr++) {
                            if (eier[radnr][kolnr] != null) {
                                antallFelter++;
                                totalUt += utvunnet[radnr][kolnr];
                            }
                        }
                    }
                    int snitt = totalUt/antallFelter;
                    print.outln("Det er i gjennomsnitt tatt ut " + snitt + " fat olje.");
                    break;
                default:
                    print.outln("Du har trykket feil, vennligst prøv igjen");
                    break;
            }
        }
    }
}